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$