Bash 如何删除不包含特定字符的行?

Bash 如何删除不包含特定字符的行?,bash,macos,shell,sed,Bash,Macos,Shell,Sed,例如,我希望删除纺织品中不包含字符“@”的所有线条 我已经试过这样使用sed了 sed '/@/!d' data.txt 我错过了什么?这不管用吗 sed -n '/@/p' [file] -n禁止默认打印 /@/在线上任意位置匹配 p如果匹配则打印 添加-i以就地编辑文件(如果提供)。与非标准sed-i相比,我更喜欢使用ed,尤其是在需要便携的情况下: printf "%s\n" "v/@/d" w | ed -s filename 这将删除不包含@的每一行,并将更改后的文件保存回光盘。

例如,我希望删除纺织品中不包含字符“@”的所有线条

我已经试过这样使用sed了

sed '/@/!d' data.txt
我错过了什么?这不管用吗

sed -n '/@/p' [file]
-n禁止默认打印 /@/在线上任意位置匹配 p如果匹配则打印 添加-i以就地编辑文件(如果提供)。

与非标准sed-i相比,我更喜欢使用ed,尤其是在需要便携的情况下:

printf "%s\n" "v/@/d" w | ed -s filename

这将删除不包含@的每一行,并将更改后的文件保存回光盘。

我猜您错过了-I:sed-I'/@!d'data.TXT非常感谢!很好用。我不认为标签是相关的,或者是?