Hi.
On 01/18/2013 02:58 PM, Timofey Andreewski wrote:
awk -v inIP=$1 '{gsub("EXTIP1.*", "EXTIP1=\""inIP"\"", $0); print >
FILENAME}' test
Тут корень проблемы в print > FILENAME
Ты построчно читаешь файл и туже в него пишешь.
Пиши в другой файл. Я проверил - работает и на строке
22222222222222kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
В файле будет:
EXTIP1="22222222222222kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"
xxxxxxxxxxx
bbbbbbbbbbb
ccccccccccc
xxxxxxxxxxx
Это идеологически не правильно: весь модифицированный поток надо
сохранять отдельно, и тогда некоректные выходы программы не повлекут за
собой нарушения целостности исходных данных. Модифицирующий код
отработает, проверяешь код завершения, и если OK, то заменяешь исходный
файл с данными, временным.
Я сходу так сделал :
awk -v inIP=$1 '{ if (NR==1) OFILE=FILENAME".bak"; gsub("EXTIP1.*",
"EXTIP1=\""inIP"\"", $0); print > OFILE; }' test && mv test.bak test