web-dev-qa-db-ja.com

コマンドラインに出力された行の間に改行を追加するにはどうすればよいですか?

メールログは非常に読みにくいです。コマンドラインに出力された各行の間に空白行を出力するにはどうすればよいですか?たとえば、ログをgrepしているとしましょう。そうすれば、複数の折り返された行が混同されることはありません。

31
xenoterracide
sed G 
# option: g G    Copy/append hold space to pattern space.

Gはあまり使用されませんが、この目的には適しています。 sedは、「パターンスペース」と「ホールドスペース」という2つのバッファスペースを維持します。 sedで処理された行は通常、さまざまなコマンドがその内容(s///pなど);ホールドスペースは空で始まり、一部のコマンドでのみ使用されます。

Gコマンドは、改行とホールドスペースの内容をパターンスペースに追加します。上記のsedプログラムはホールドスペースに何も配置しないため、Gは処理されるすべての行に改行を効果的に追加します。

53
Chris Johnsen

Awkを使用して、改行を追加します。これにより、不要なものを除外することもできます。

awk '{print $0,"\n"}' | less
9
KeithB

Sedを使用して、行全体と1つの余分な改行文字で置き換えます。

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
5
fschmitt

これはあなたが求めているものですか?

grep SPAM mail.log | while read -r line; do echo; echo $line; done

3
Nifle

パイプ|出力:

sed G

例:

ls | sed G

もし、あんたが man sed表示されます

G改行文字の後にパターンスペースにホールドスペースの内容を追加します。

0
jasonleonhard

見た目以上のものである場合は、テキストファイルに送信してテキストエディターで開き、行を折り返すかどうかを設定して簡単に検索できるようにし、不要な行などを削除せずに削除します。多くのコマンドを入力する必要があります。

cat file.log > log.txtおよびgedit log.txtまたはnanoのような端末エディター

編集者 cp file.log log.txt wichはもちろん、簡単で高速です... KeithBコメントのおかげで

0
laurent