0

I am very new to this all and have used this website to help me find the answers i'm looking for. I want to replace a line in multiple files across multiple directories. However I have struggled to do this.

I have created multiple directories 'path_{0..30}', each directory has the same 'input' file, and another file 'opt_path_rx_00i.xyz' where i corresponds to the directory that the file is in (i = {0..30}).

I need to be able to change one of the lines (line 7) in the input file, so that it changes with the directory that the input file is in (path_{0..30}). The line is:

pathfile opt_path_rx_00i.xyz

Where i corresponds to the directory that the file is in (i={0..30})

However, i'm struggling to do this using sed. I manage to change the line for each input file in the respective directories, but i'm unable to ensure that the number i changes with the directory. Instead, the input file in each directory just changes line 7 to:

pathfile opt_path_rx_00i.xyz

where i, in this case, is the letter i, and not the numbers {0..30}.

I'll show what i've done below in order to make more sense.

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

What I want to happen is, for example in directory path_3, line 7 in the input file will be:

pathfile opt_path_rx_003.xyz

Any help would be much appreciated

cde-x
  • 1

1 Answers1

0

can you try with double quotes

for i in {0..30}; do
   sed -i "7s/.*/pathfile-opt_path_rx_00$i.xyz/" "path_$i/input"
done
tripleee
  • 175,061
  • 34
  • 275
  • 318
Derviş Kayımbaşıoğlu
  • 28,492
  • 4
  • 50
  • 72