AIX |опция sed -i не работает для определенного номера строки - PullRequest
0 голосов
/ 26 июня 2019

Я хочу вставить / удалить строку с указанным номером строки в AIX OS, используя скрипт.

я пробовал ниже код

no2=103
dis=<disabled></disabled>
sed "${no2} a $dis" $node > vi.xml

До сих пор я пробовал awk, исполняемую команду vi. Ничего не работает пока

Вывод ошибки следующий:

server:/u/vwadhwa/MIMOnOffHold $ ./script.sh INTACTIX_TO_NDW_ITX007 stop
Performing stop action on dirmon-INTACTIX_TO_NDW_ITX007 which is present in node-IKBNODE01.xml
sed: Not a recognized flag: i
Usage:  sed [-n] [-u] Script [File ...]
        sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...]

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Этот вид редактирования файла на месте с помощью вставки текста в определенной строке является хорошим примером использования для ed всех вещей (которые, как я предполагаю, есть в AIX).

Для вставки новогострока перед строкой $no2 (создание новой строки $no2; используйте a для вставки после этой строки):

ed -s "$node" <<EOF
$no2 i
$dis
.
w
q
EOF

и для удаления строки $no2:

ed -s "$node" <<EOF
$no2 d
w
q
EOF

Хотя кажется, что вы работаете с XML, это означает, что инструмент, который понимает XML, будет лучшим выбором - что, если ваш файл изменяется так, что слепое добавление тега в строке 103 делает его недействительным

0 голосов
/ 26 июня 2019

Не совсем уверен, что вы спрашиваете, но если вы просто хотите вставить новую строку, вы можете использовать что-то вроде этого, где $dis это строка, которую вы хотите вставить:

perl -pe "s/^/$dis\n/ if \$. == $line_number" input_file > output_file

Вы также можете использовать флаг -i для редактирования файла на месте:

perl -i -pe "s/^/$dis\n/ if \$. == $line_number" input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...