当我使用以下命令时,它会添加\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$/, "")
而不是sub(/\r/, "")
这样,因此您只删除\r
位于行结尾的 s。