使用sed替换整行

时间:2019-01-11 18:53:39

标签: bash shell

我对此非常陌生,并已使用该网站来帮助我找到所需的答案。 我想替换多个目录中多个文件中的一行。但是我一直在努力做到这一点。

我创建了多个目录“ path_ {0..30}”,每个目录具有相同的“ input”文件,以及另一个文件“ opt_path_rx_00i.xyz”,其中i对应于该文件所在的目录(i = {0..30})。

我需要能够更改输入文件中的其中一行(第7行),以便它随输入文件所在的目录(path_ {0..30})而变化。该行是:

路径文件opt_path_rx_00i.xyz

其中i对应于文件所在的目录(i = {0..30})

但是,我正在努力使用sed来做到这一点。我设法更改各个目录中每个输入文件的行,但是我无法确保数字随目录而改变。相反,每个目录中的输入文件只需将第7行更改为:

路径文件opt_path_rx_00i.xyz

在这种情况下,其中i是字母i,而不是数字{0..30}。

为了更有意义,我将在下面展示我的工作。

  

对于{0..30}中的i   做   sed -i'7s /.*/ pathfile-opt_path_rx_00 $ i.xyz /'path_ $ i / input   完成

我想发生的是,例如在目录path_3中,输入文件中的第7行将是:

路径文件opt_path_rx_003.xyz

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以尝试用双引号

for i in {0..30}; do
   sed -i "7s/.*/pathfile-opt_path_rx_00$i.xyz/" "path_$i/input"
done