добавьте слово в конец строки в txt файле

У меня есть файл, который должен иметь "OK" в конце определенной строки

строка, которая должна быть изменена, является первой строкой, не заканчивающейся "OK"

Я могу grep файл, чтобы заставить строку быть измененной с помощью следующего кода

grep -vnm 1 OK '/content2'

я нуждаюсь в помощи в, добавляет шаблон хорошо в конец этой строки

Пример:

если содержание файла имеет следующие строки

aaaaaaaaaaaaaa OK
bbbbbbbbbbbbbb OK  
cccccccccccccc  
dddddddddddddd
eeeeeeeeeeeeee OK

я должен добавить хорошо к строке, содержит cccccccccccc только

3
задан 5 September 2014 в 12:42

2 ответа

Вы могли использовать следующее awk программа:

awk -v s=" OK" '/OK$/ { print; } !/OK$/ { print $0 s; s=""; }'

Это работает как это:

/OK$/ { print; }

распечатывает любую строку, заканчивающуюся в OK как, тогда как

!/OK$/ { print $0 s; s=""; }

распечатывает любую строку, не заканчивающуюся в OK со значением переменной s добавленный.

Переменная s первоначально строка ' OK'. Это изменяется на пустую строку после первого обнаружения строки, не заканчивающейся в OK.

Обновление

Еще более кратко:

awk -v s=" OK" '!/OK$/ { print $0 s; s=""; } /OK$/'

устраняет { print; } действие для /OK$/ условие, как { print; } действие по умолчанию.

Исправление

Смотря на вопрос снова, это не говорит OK должен быть добавлен к первой строке, не имеющей OK, но вместо этого к первой строке, не имеющей OK который следует за строкой, которая действительно имеет OK. Так, мы должны сохранить переменную, c это отмечает это по крайней мере один OK строка была замечена, и переменная d это отмечает это, мы сделаны:

awk ' /OK$/ { if (!d) c=1; } 
     !/OK$/ { if (c) d=1; } 
     c && d { s=" OK"; c=0; }
     { print $0 s; s=""; }'
4
ответ дан 1 December 2019 в 16:29
sed -ri 's/.*cccccccccccccc */cccccccccccccc OK/g' filename

, где filename название Вашего входного имени файла.

-1
ответ дан 17 November 2019 в 20:50

Другие вопросы по тегам:

Похожие вопросы: