Dear Friends,
I am facing some problem with some hundred files. Hence to use these file I have to make a small change in each file. But its not possible to open each file and make changes manually. Hence I need guidance frm you to automate it.
Example File name is "Queue_11.txt"
reload sec=F
Code=7
reload sec=F
reload sec=F
No-load=F1
Reset
NULL
A-cap=LA
reload sec=F
In above text I want to replace reload sec=F to reload sec=FQ. But occurrence of this pattern is around 4 times in whole file... I want to replace only 3rd line.
I am expecting o/p as follows
reload sec=F
Code=7
reload sec=F
reload sec=FQ
No-load=F1
Reset
NULL
A-cap=LA
reload sec=F
Please suggest.
awk '3==c++ && /^reload sec=F$/{$0=$0"Q"}1' infile > newfile
If the line you want to change is the 4th line in each file:
$ ls
queue_11.txt queue_12.txt queue_13.txt
$ ls Que*.txt |
> while read FILE
> do
> sed '4s/F/FQ/' ${FILE} > ${FILE}.new
> done
$ ls
queue_11.txt.new queue_12.txt.new queue_13.txt.new
queue_11.txt queue_12.txt queue_13.txt
$ cat Queue_11.txt.new
reload sec=F
Code=7
reload sec=F
reload sec=FQ
No-load=F1
Reset
NULL
A-cap=LA
reload sec=F
$ cat Queue_12.txt.new
reload sec=F
Code=7
reload sec=F
reload sec=FQ
No-load=F1
Reset
NULL
A-cap=LA
reload sec=F
$ cat Queue_13.txt.new
reload sec=F
Code=7
reload sec=F
reload sec=FQ
No-load=F1
Reset
NULL
A-cap=LA
reload sec=F
sed '3s/reload sec=F/reload sec=FQ/' infile > newfile
in GNU sed you can set the -i option to change your input file
If the pattern isn't on the 3rd line and you want to replace the 3rd occurance (wherever):
awk '/reload sec=F/ && ++c==3{$0="reload sec=FQ"}1' file > newfile
bash
count=0
while read -r line
do
case "$line" in
*"reload sec=F"* )
count=$((count+1))
if [ "$count" -eq 3 ] ;then
line=${line/reload sec=F/reload sec=QF}
fi
;;
esac
echo $line
done < "file"
awk '3==c++ && /^reload sec=F$/{$0=$0"Q"}1' infile > newfile
awk '/reload sec=F/ && ++c==3{$0="reload sec=FQ"}1' file > newfile
Why have the different?