CentOS 5.6を使用してテキストファイル形式を再指定して、すべてのテキストを1行に配置します。

CentOS 5.6を使用してテキストファイル形式を再指定して、すべてのテキストを1行に配置します。

デバッグ目的で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/変更されます)。スペースの代わりにタブを好む場合は、次のようにして必要な数のスペースまたはタブ()を置き換えます。thisthats/^[ \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'

関連情報