I wrote a script to grep for a closing XML node. Then I need it to navigate up a line and insert some XML. Then go to the next occurrance. I have this
INSERT_NODE='<QUANTITATIVE NAME="'${QR_NAME}'" QUANT="1" />'
GREP_FOR='</JOB>'
TMP_FILE=/tmp/lineArray.$$
if [[ -e ${DRF_PATH} ]]; then
continue
else
echo "File ${DRF_PATH} does not exist."
exit 1
fi
grep -n "${GREP_FOR}" ${DRF_PATH} | cut -d: -f1 > ${TMP_FILE}
cat ${TMP_FILE} | while read LINE
do
set -A LINE_ARRAY ${LINE_ARRAY
[*]} $LINE
done
((COUNT=0))
while (( ${COUNT} < ${#LINE_ARRAY
[*]} ))
do
INSERT_LINE=${LINE_ARRAY[${COUNT}]}
((INSERT_LINE=${INSERT_LINE}-1))
echo "[Insert] ${INSERT_NODE} at line ${INSERT_LINE}"
((COUNT=${COUNT}+1))
done
exit 0
And I have the info I need now, except the actual insert part
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 75
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 149
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 228
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 300
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 364
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 428
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 518
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 569
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 644
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 709
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 782
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 861
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 912
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 985
[Insert] <QUANTITATIVE NAME="DB-BLODS" QUANT="1" /> at line 1058
...
---------- Post updated at 07:00 PM ---------- Previous update was at 06:55 PM ----------
I was reading up on awk, but now it looks like maybe I should use sed. Still reading the man file though.
---------- Post updated at 07:20 PM ---------- Previous update was at 07:00 PM ----------
Glad you were able to solve it by yourself.
Not only can you insert, you can append and change also.
Also, there is a way you can avoid the last line (the move command).
Do a little more research on "w" option. Of course, it has its own limitations. But if the file size is really big, then you save a lot of time and resources.