为什么 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";
我想用 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";