Suppose that I have ten bash shell scripts: script1.sh, script2.sh, ..., script10.sh. Initially, all ten files are identical.
Now, I would like to make two changes in each script:
In each file, I would like to change a particular line (say line 8) -- that is, deleting whatever is on line 8 and replacing it with a "constant" string that I specify, such as
"This is line 8."This is similar to this question, but there they wanted to replace"AAA"with"BBB", whereas I would like to replace line 8 (whatever it is) with"This is line 8.".In each file, I would like to change another particular line (say line 21) and replace it with a "variable" string that I specify. For example, in
script1.shI want to change line 21 to"XYZ"; inscript2.shI want to change line 21 to"PQR"; and inscript3.shI want to change line 21 to"ABC". Essentially this is just many calls to the function in (1) above -- except that I would be making the change in one individual file rather than in all files, and that I am specifying ten different strings rather than just one. So to obtain (2) here, perhaps I would just call (1) ten different times with different parameters.
I am interested in solutions that use commonly available Linux programs like bash, vi, awk, gawk, etc.
sed -i '8s/^.*$/foo/' f1 f2? – l0b0 Jun 21 '13 at 21:51echo test1 > f1; echo test2 > f2; sed -i '1s/^.*$/foo/' f1 f2.cat f1 f2shows that both were changed tofoo. – l0b0 Jun 21 '13 at 22:05-i. And in that case just one line was changed. Doesn't make sense to me. A bug (GNU sed-Version 4.2.1)? – Hauke Laging Jun 21 '13 at 22:10-s: "consider files as separate rather than as a single continuous long stream." – l0b0 Jun 22 '13 at 08:28