删除行awk

Fra*_*sco 0 awk

一个非常简单的问题(我认为)

我正在学习编辑文件 awk

我想从文件中搜索所有线条并删除所有带有醋酸纤维素的线条

我试过了

awk 'match($0,"acetate") == 0 {print $0}' filename.txt > filename.txt
Run Code Online (Sandbox Code Playgroud)

但是,这会返回一个空的txt文件.

有什么建议吗?

Gil*_*not 8

试着这样做:

awk '!/acetate/{print}' filename.txt > new_filename.txt &&
mv new_filename.txt filename.txt
Run Code Online (Sandbox Code Playgroud)

或者干脆:

awk '!/acetate/' filename.txt > new_filename.txt &&
mv new_filename.txt filename.txt
Run Code Online (Sandbox Code Playgroud)

您无法在同一时间打印和修改文件awk.如果你想在同一个命令中执行它,请尝试使用:

sed -i '/acetate/d' filename.txt
Run Code Online (Sandbox Code Playgroud)

或者对于Mac Os X:

sed -i.'' '/acetate/d' filename.txt
Run Code Online (Sandbox Code Playgroud)