デバッグ目的でHTMLに保存する210行のHTMLブロックがあります。
予想通り、HTMLはそれに応じてフォーマットされているため、スペースとタブを含むファイルに保存されます。このファイルを変換してすべてのHTMLを1行に入れることはできますか? CentOS 5.6を使用しています。
たとえば、これを変更する簡単な方法はありますか?
<div id="crmpicco">
<div class="ayrshireminis">
... content in here ...
</div>
</div>
これに関して:
<div id="crmpicco"><div class="ayrshireminis"></div></div>
答え1
あなたは見つけることができますtr
実用的で役に立ちます。cat INPUT_FILE | tr -d '\n\r' > OUTPUT_FILE
仕事をしているようです。
-d
代わりに文字を削除してください。翻訳する
man tr
さらにできることについてtr
詳しく学んでください。
答え2
これを行うために使用できるツールはたくさんあります。 Perlの解決策は次のとおりです。
コマンドラインから:
perl -p -e 's/^ *//; s/ *$//; chomp' < FILE > OUTFILE
これをFILE
ファイル名とOUTFILE
出力を書き込む新しいファイルに置き換えます。両方に同じファイル名を使用しないでください。
機能:perl -p
各入力行でPerlスクリプトを実行し、結果を出力に書き込みます。と演算子を使用して、目的のファイルの<
入力と出力を設定します。>
スクリプト自体はこの-e
オプションに従い、3つの代替項目を作成します。
s/^ *//
:行の先頭()にあるスペース(スペース、アスタリスク)を^
何もないものに置き換えます(コマンドがにs/this/that/
変更されます)。スペースの代わりにタブを好む場合は、次のようにして必要な数のスペースまたはタブ()を置き換えます。this
that
s/^[ \t]*//
\t
s/ *$//
:同じですが、行の末尾にあります($
)。
chomp
:perl-speakは、行末の改行文字を削除するために使用されます。
答え3
awk '{ORS=""; print $0}' textfile
<div id="crmpicco"> <div class="ayrshireminis">... content in here ... </div></div>
さらに、すでに指摘したように、このtr
ユーティリティはこの場合非常に便利です。改行を削除そしてこのユーティリティをすべてのタブ/スペースを同時に使用するには、tr
次の手順を実行します。
# cat textfile |tr -d '\n\r" "'
<divid=crmpicco><divclass=ayrshireminis>...contentinhere...</div></div>
ノート処置: スペースの代わりにタブを使用する場合は、次のようにします。
cat textfile |tr -d '\n\r\t'