使用sed替换文件批次中的不相同编号

时间:2018-12-04 22:38:31

标签: sed

我正在尝试使用sed命令替换多个文件中的字母和数字的组合,但到目前为止我找不到正确的方法。单个文件中的所有行在字母M之后都具有相同的数字,但是数字在文件中有所不同。例如,在文件M800.txt中,我正在尝试替换此文件:

M800_Arch_nautilus_Posei XXXCV  
M800_Arch_exocet_Pleiade DZEFE

由此:

Arch_nautilus_Posei XXXCV  
Arch_exocet_Pleiade DZEFE

在文件M56.txt中:

M56_Arch_nautilus_Posei FGYYE  
M56_Arch_exocet_Pleiade UJEYY

作者:

Arch_nautilus_Posei FGYYE  
Arch_exocet_Pleiade UJEYY

我基本上是在尝试删除目录中的每个文件中的M*_,该目录有800个文件,每个文件的每一行都带有此类字符。

对此我真的很陌生,到目前为止尝试了此却没有成功:

sed -i 's/\M._$*//g' *.txt

也许有人可以在这里指出错误?

2 个答案:

答案 0 :(得分:2)

  

单个文件中的所有行在字母M之后都有相同的数字,但数字在文件中有所不同。

然后您需要做的就是删除所有内容,直到第一个下划线加上下划线本身为止。

sed -i 's/^[^_]*_//' *.txt
  • ^匹配行的开头,
  • [^_]*匹配零个或多个非下划线字符,
  • _与下划线匹配。

答案 1 :(得分:1)

Assuming the input was >M800_Arch_nautilus_Posei XXXCV等,然后:

sed -i 's/[[:alnum:]]*_//' *.txt

...将该行替换为:

>Arch_nautilus_Posei XXXCV

...等等。