Sed 在unix中从文件中删除带有子字符串的行

Sed 在unix中从文件中删除带有子字符串的行,sed,Sed,我有一个包含文件列表的文件(abc.txt)。样本内容如下。我想删除那些包含.tar名称的行,并保留所有其他包含.tar.gz的行 HUW_3356_DLM4_00_00.tar.gz HUW_3359_DLM4_01_00.tar.gz HUW_3459_DLM4_02_00.tar HUW_4359_DLM4_03_00.tar HUW_3360_DLM4_02_00.tar.gz 我试过了,但没用 sed -i "/*.tar/d" abc.txt 将行尾与$匹配。请注意,表达式是正则

我有一个包含文件列表的文件(abc.txt)。样本内容如下。我想删除那些包含.tar名称的行,并保留所有其他包含.tar.gz的行

HUW_3356_DLM4_00_00.tar.gz
HUW_3359_DLM4_01_00.tar.gz
HUW_3459_DLM4_02_00.tar
HUW_4359_DLM4_03_00.tar
HUW_3360_DLM4_02_00.tar.gz
我试过了,但没用

sed -i "/*.tar/d" abc.txt

将行尾与
$
匹配。请注意,表达式是正则表达式而不是球状,需要转义点以匹配点

sed -i '/\.tar$/d' abc.txt

将行尾与
$
匹配。请注意,表达式是正则表达式而不是球状,需要转义点以匹配点

sed -i '/\.tar$/d' abc.txt

你能试试下面的吗

sed -n '/\.tar\.gz$/p' Input_file
使用
sed
中的
-i
选项将输出保存到输入文件本身

从手册页
man sed

-n、 安静,安静

抑制图案空间的自动打印

对于
p
选项:

p打印当前图案空间


你能试试下面的吗

sed -n '/\.tar\.gz$/p' Input_file
使用
sed
中的
-i
选项将输出保存到输入文件本身

从手册页
man sed

-n、 安静,安静

抑制图案空间的自动打印

对于
p
选项:

p打印当前图案空间


它究竟如何“不起作用”?你得到了什么结果?@FelixKling它没有删除带有的行。tar预期输出是:HUW_3356_DLM4_00_00.tar.gz HUW_3359_DLM4_01_00.tar.gz HUW_3360_DLM4_02_00.tar.gz编辑你的问题并在文件中插入预期输出。是否要删除所有行?
sed
希望传递一个正则表达式,但
*。tar
不是有效的正则表达式。看起来更像一个地球仪。您想要
\.tar$
。它到底是如何“不起作用”的?你得到了什么结果?@FelixKling它没有删除带有的行。tar预期输出是:HUW_3356_DLM4_00_00.tar.gz HUW_3359_DLM4_01_00.tar.gz HUW_3360_DLM4_02_00.tar.gz编辑你的问题并在文件中插入预期输出。是否要删除所有行?
sed
希望传递一个正则表达式,但
*。tar
不是有效的正则表达式。看起来更像一个地球仪。您需要
\.tar$