Bash

AWK 命令忽略為空白行添加以“n”結尾的換行符並在一行中列印

  • April 1, 2022

當我使用以下命令時,它會添加\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

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$/, "")sub(/\r/, "")所以你只刪除行尾\r的 s。

引用自:https://unix.stackexchange.com/questions/697577