[英]How to delete a string with the same word and consecutively increasing number in a text file using a shell script?
例如,我有:
Hello1 :
Hello2 :
Hello3 :
如何使用Shell脚本删除所有这些。 这个数字一直到1000。
sed -i '/^Hello[[:digit:]]\+\>/d' file.txt
或者,如果要输出到其他文件:
sed '/^Hello[[:digit:]]\+\>/d' file.txt > newfile.txt
如果要删除仅包含Hello(number) :
所有行,请使用以下命令:
file
样本输入
Hell
Hello1 :
No hello stuff here
Unjulating stuff
Hello2 :
Some sentence
Hello99 :
脚本
sed -Ei '/^Hello[[:digit:]]+ :$/d' file
修改后的file
中的示例输出
Hell
No hello stuff here
Unjulating stuff
Some sentence
上面发生了什么
^
,我们检查行的开头。 Hello[[:digit:]]+ :$
检查模式Hello(number) :
请注意,我使用-E启用sed扩展正则表达式,因此无需转义+即( \\+
)。 此处[[:digit:]]
是一个类,它包含所有十进制数字,而+
用于检查之前的模式是否至少匹配一次。 $
检查行尾 d
选项将其删除 inplace edit
选项-i
以便将更改直接保存到文件中。 如果您想更改一行,则以Hello(number) :
开头Hello(number) :
然后使用以下脚本
sed -Ei '/^Hello[[:digit:]]+ :/d' file
您可能已经注意到,我刚刚删除了$
,所以我们的模式匹配以Hello(number) :
开头的任何行Hello(number) :
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.