用sed from list替换子目录中的文件项

用sed from list替换子目录中的文件项,sed,Sed,我想替换一大堆文档中的某一行(#6),如下所示: N Metal1 Metal2 Metal3 Metal4 N Cr Hf Mo Nb 如果需要用排列列表中的化学符号替换金属: CrHfMoNb CRHFMOT CRHFMOT CrHfMoV CrHfMoW CrHfMoZr CrHfNbTa CrHfNbTi CrHfNbV CrHfNbW CrHfNbZr CrHfTaW CrHfTaW CrHfTaZr CRHFMOT CrHfMoV CrHfVZr CrHfWZr CrMoN

我想替换一大堆文档中的某一行(#6),如下所示:

N  Metal1 Metal2 Metal3 Metal4
N  Cr Hf Mo Nb 
如果需要用排列列表中的化学符号替换金属:

CrHfMoNb CRHFMOT CRHFMOT CrHfMoV CrHfMoW CrHfMoZr CrHfNbTa CrHfNbTi CrHfNbV CrHfNbW CrHfNbZr CrHfTaW CrHfTaW CrHfTaZr CRHFMOT CrHfMoV CrHfVZr CrHfWZr CrMoNbTa CRMONBT CrMoNbW CrMoNbZr CrMoNbZr CRMONTI CRMONTIV CRHFMOT CRHFMOT CRHFMOT CRHFMOT CRHFMOT CRHFMOT CrHfMoV CrHfMoV CrHfMoZr CrHfWZr CRMOW CRMOW CrMoWZr CrMoNbZr CRMOW CRMOWCrNbTiW CrNbTiZr CrNbVW CrNbVZr CrtIw CrtIzr CrTiVW CrTiVZr CrTiVW CrTiVZr CrTiVZr HfMoNbW HfMoNbW HfMoNbZr HfMoTaTi HfMoTaV HfMoTiW HfMoTiW HfMoTiZr HfMoTiZr HfMoWZr HfMoWZr HfNbTaiZr HfNbTvZr HfNbTivW HfNbZr HfMoTiZr HfMoTiZr HfNbTivW HfNbIvZr HfNbIvZr HfNbNbNbIvW HfNbIvW HfHfTaVW HfTaVZr HfTaWZr HfTiVW HfTiVZr HfTiWZr HfTiWZr HfTiWZr HfTiVZr Monbtatiw MoNbTiZr MoNbTiZr MoNbTiZr MoNbTiZr MoNbWZr Motativw Motativw MoTiVZr MoTiVZr MoTiVZr MoTiVZr MoTiVZr MoVWZr Nbtativzr NbTaVZr NbTaVZr NbTaVZr NbTaVZr NbTaWZr NbTaWZr NbTaWZr NbTaWZr NbtiVwtiVzr NbTiVZr

例如,要使其看起来像这样:

N  Metal1 Metal2 Metal3 Metal4
N  Cr Hf Mo Nb 
我可以使用sed命令轻松完成此操作,方法是:

sed -i '6s/Metal1 Metal2 Metal3 Metal4/Cr Hf Mo Nb/' filename`
问题是,我需要为所有126个组合自动执行此操作,其中每个文件都位于每个组合的自己的子目录中,并且必须根据自己的元素进行相应的调整。此更改之前,文件始终具有相同的名称且完全相同。
化学符号必须按字母顺序列出,并且每个符号之间必须有一个空格,否则代码将不起作用。我认为这很困难,因为除了V之外,所有使用的元素的符号中都有两个字母。有没有一种有效的方法可以做到这一点?

处理两个字符(Zr)一个字符(W)的问题很容易。每个大写字母都表示新元素的开始

cd dir/
for dir in *N; do
    split="$(sed 's/N$//;s/[A-Z]/ &/g' <<< "$dir")"
    sed -i "s/N  Metal1 Metal2 Metal3 Metal4/N $split/" "$dir/file"
done
cd目录/
对于dir in*N;做

split=“$(sed's/N$/;s/[A-Z]/&/g‘你能给我们提供更多关于你的文件结构的信息吗?»每个作文都有自己的子目录«*听起来你有
dir/CrHfMoNb/file
dir/CrHfMoTa/file
,等等。另外:我们需要重新排序吗?你明确地说了»按字母顺序列出«,但组合列表和每个字母中的元素都有h组合似乎已经被排序了。正如你所说,除了每个名字都附加了一个N,所以
dir/CrHfMoNbN/file
dir/CrHfMoTaN/file
等等。是的,元素已经被排序了,我只想保持这个顺序不变。当我读到这个问题的前两行时,我想…这里有一个喜欢t的金属风扇o处理他的歌曲列表。但后来我看到了替换,意识到OP是一个真正的金属粉丝!注意,
W
也是一个单一的符号,你可以说所有符号都有多达3个字母,但都是以大写字母开头的。就像我想要的一样,工作起来很有魅力!