AWK コマンドは、空行の「\n」で終わる改行を無視し、1 行に印刷します。

AWK コマンドは、空行の「\n」で終わる改行を無視し、1 行に印刷します。

次のコマンドを使用すると、すべての\n行に追加されますが、空白行はスキップされます。

awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}'

例: 次のように入力します。

George Washington, 1789-1797

John Adams, 1797-1801
Thomas Jefferson, 1801-1809

出力:

George Washington, 1789-1797\nJohn Adams, 1797-1801\nThomas Jefferson, 1801-1809\n

予想される出力:対\n\n

George Washington, 1789-1797\n\nJohn Adams, 1797-1801\nThomas Jefferson, 1801-1809\n

答え1

NFブロック前の条件は具体的には次のとおりprintfです。言うawk は空行をスキップします。そうしたくない場合は、そうするように言わないでください。

$ awk '{sub(/\r/, ""); printf "%s\\n",$0}' file
George Washington, 1789-1797\n\nJohn Adams, 1797-1801\nThomas Jefferson, 1801-1809\n$

ただし、sub()目的がDOS行の終わりを削除することである場合は、代わりsub(/\r$/, "")にこれを実行する必要があるため、行の終わりからsをsub(/\r/, "")削除するだけです。\r

関連情報