我正在尝试使用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
也许有人可以在这里指出错误?
答案 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
...等等。