bash永久删除文件中的一行

Sar*_*ara 1 sed file line

我有以下代码用于在文件中查找字符串,然后删除包含该字符串的行.

echo `sed  /$string/d  file.txt` > file.txt
Run Code Online (Sandbox Code Playgroud)

问题是,如果最初file.txt包含:

a
b
c
Run Code Online (Sandbox Code Playgroud)

删除"a"(string = a)后,file.txt将成为

b c
Run Code Online (Sandbox Code Playgroud)

代替

b
c
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

Ste*_*eve 7

您不需要echo包装,只需尝试:

sed -i '/a/d' file.txt
Run Code Online (Sandbox Code Playgroud)


Tho*_*hor 6

这是因为反击.改为:

sed -i /$string/d  file.txt
Run Code Online (Sandbox Code Playgroud)

请注意,如果你想这样做原地的,你需要使用-ised>会破坏文件之前,sed可以读取它.