我正在尝试使用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
等等