Linux grep/awk:过滤文件中的行,但克隆(保留或省略)EOF 处的尾随换行符
Linux grep/awk: Filter lines in a file, but clone (preserve or omit) a trailing newline at EOF
我想过滤行,例如使用
grep -v keyword $file1 > $file2
但我希望输出文件具有与输入文件相同的 "end of file" 情况,即如果 file1 包含尾随换行符,则 file2 也应包含尾随换行符,并且只有这样。
如上使用 'grep',file2 始终包含尾随换行符,即使 file1 不包含也是如此。
对于 RT 使用 GNU awk:
$ cat with_nl
a
x keyword y
c
$
$ cat without_nl
a
x keyword y
c$
$
$ awk '{ORS=RT} !/keyword/' with_nl
a
c
$ awk '{ORS=RT} !/keyword/' without_nl
a
c$
我想过滤行,例如使用
grep -v keyword $file1 > $file2
但我希望输出文件具有与输入文件相同的 "end of file" 情况,即如果 file1 包含尾随换行符,则 file2 也应包含尾随换行符,并且只有这样。
如上使用 'grep',file2 始终包含尾随换行符,即使 file1 不包含也是如此。
对于 RT 使用 GNU awk:
$ cat with_nl
a
x keyword y
c
$
$ cat without_nl
a
x keyword y
c$
$
$ awk '{ORS=RT} !/keyword/' with_nl
a
c
$ awk '{ORS=RT} !/keyword/' without_nl
a
c$