使用Perl替换多个文件中的术语

时间:2018-03-19 11:51:33

标签: sh

我想替换名为&#34的输入文件中的一些值; i_f.xyz"使用perl,我从1到19。

在我的文件中,我想要更改" 6"进入" C"。

为此,我尝试了

perl -pi -e 's/6/C/g' ${i}_f.xyz

,以及其他一些组合,但它不起作用。

有人可以帮我吗?非常感谢:)

3 个答案:

答案 0 :(得分:0)

您需要遍历占位符变量。使用for

#!/bin/bash
for ((i=1; i<=19; i++)); do
    perl -pi -e 's/6/C/g' "${i}_f.xyz"
done

修改:replace seq with bash built-in

答案 1 :(得分:0)

更简单(不需要任何循环):

perl -i -pe 's/6/C/g' 1[0-9]_f.xyz [0-9]_f.xyz

(从1_f.xyz19_f.xyz

答案 2 :(得分:0)

非常感谢您的回答。

最后,我找到了一个解决方案:

#! /bin/bash

for i in *_f.xyz
do

perl -pi -e 's/6/C/g' *_f.xyz
perl -pi -e 's/1/H/g' *_f.xyz

done

但是现在我还有其他方法!我是bash脚本,编程语言和其他计算机科学方面的新手,所以谢谢! :)