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

Ответить