繁体   English   中英

如何使用Shell脚本删除文本文件中具有相同单词并连续增加数字的字符串?

[英]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

上面发生了什么

  1. 使用模式中的^ ,我们检查行的开头。
  2. 我们使用Hello[[:digit:]]+ :$检查模式Hello(number) : 请注意,我使用-E启用sed扩展正则表达式,因此无需转义+即( \\+ )。 此处[[:digit:]]是一个类,它包含所有十进制数字,而+用于检查之前的模式是否至少匹配一次。
  3. 使用$检查行尾
  4. 对于匹配的模式,请使用d选项将其删除
  5. 我还使用了sed 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM