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

  • 本文关键字:编号 文件 sed 替换 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

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

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

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

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

假设输入为>M800_Arch_nautilus_Posei XXXCV等,则:

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

将该行替换为:

>Arch_nautilus_Posei XXXCV

等等

最新更新