为什么 awk 删除空行

Why is awk removing empty lines

我想用 awk 将两个字符串文件的更改合并到一个文件中,但它删除了我的文件中使用的空行以提高可读性。

awk -F= '!a[]++' 1.strings 2.strings > results.strings

我的文件看起来像:

"cart.title" = "Cart";
"cart.subtitle" = "Price";

"checkout.title" = "Checkout";

但我的输出是:

"cart.title" = "Cart";
"cart.subtitle" = "Price";
"checkout.title" = "Checkout";

但我想保留 checkout 之前的换行符。

您的脚本没有删除换行符,而是删除了一些空行(可能包括所有空格的行)。给出这样的输入:

$ printf 'foo\n\nbar\n'
foo

bar

此脚本将删除换行符(不是你的情况):

$ printf 'foo\n\nbar\n' | awk -v ORS= '1'
foobar$

虽然此脚本将删除空行(您的情况):

$ printf 'foo\n\nbar\n' | awk 'NF'
foo
bar

您的脚本只会删除一个空行,前提是它之前有另一个空行,例如如果第一个输入行是空的,因为它只在所有行中打印具有唯一 </code> 值的行,无论是否为空。要保留所有空行,请使用:</p> <pre><code>$ awk -F= '!NF || !a[]++' file "cart.title" = "Cart"; "cart.subtitle" = "Price"; "checkout.title" = "Checkout";