2016-12-12 6 views
-2

Я пытаюсь добавить строку под определенной строкой, скажем [НИЖЕ ЗДЕСЬ] и без использования SED. Каков наилучший альтернативный способ сделать это?Добавление текста после определенной строки файла в сценарии Bash без SED

Я пытался использовать SED, но это не поддерживалось для машины, на которой был создан сценарий.

sed --in-place "/^\[BELOW HERE\]/a BLabla=Database toolSomething" file 

/а = добавить

+5

Покажите нам ваши усилия пожалуйста. –

+0

Не уверен, что вы подразумеваете под этим –

+0

StackOverflow не является ресурсом _write-code-for-me_. –

ответ

0

Вам не нужно awk, sed или любой других сторонних встроенных модулей для этой тривиальной задачи. Вы можете использовать ed редактора, доступного от UNIX дней, доступных во всех основных дистрибутивах этих дней,

printf '%s\n' 'g/[BELOW HERE]/s/\r/BLabla=Database toolSomething 
/g' w q | ed -s file 
+0

Отлично! Благодарю. –

+0

Он мог бы использовать sed тоже, но без недопустимых аргументов, которые он добавлял. –

0

Используя awk и его gsub функцию.

awk '/BELOW HERE/{gsub(/$/,"&\nTHIS IS NEW LINE ADDED HERE")}1' input 
I am trying to append a line under a specific line, 
lets say [BELOW HERE] and without using SED. 
THIS IS NEW LINE ADDED HERE 
What is the best alternative way to do this? 

Не уверен, что вы не хотите использовать sed: Вот один sed решение:

sh-4.1$ sed '/BELOW HERE/a\ 
"THIS IS NEW LINE ADDED HERE"' input 
I am trying to append a line under a specific line, 
lets say [BELOW HERE] and without using SED. 
"THIS IS NEW LINE ADDED HERE" 
What is the best alternative way to do this? 
sh-4.1$ 

входного файла:

cat input 
I am trying to append a line under a specific line, 
lets say [BELOW HERE] and without using SED. 
What is the best alternative way to do this? 
+0

awk '/ НИЖЕ ЗДЕСЬ/{gsub (/ $ /, "& \ nTHIS IS NEW LINE ADDED ЗДЕСЬ")} 1' вход Работает для меня, спасибо! Причина, по которой я хочу использовать альтернативный способ, заключается в том, что она используется в системе AIX, где SED в настоящее время недоступна. –

+0

Я не верю, что есть система, которая имеет ed и awk, но не sed. Я думаю, что вы вызывали sed с недопустимыми аргументами и неправильно понимали возникшее сообщение об ошибке. Правильный способ сделать это в awk btw будет 'awk '1;/НИЖЕ ЗДЕСЬ/{напечатать "ЭТО НОВАЯ ЛИНИЯ ДОБАВЛЕНО ЗДЕСЬ"} 'input'. Способ, предложенный в ответе, будет критически изменен при использовании различных значений добавляемой строки, например. попробуйте добавить в него '&': '" ЭТО И НОВАЯ ЛИНИЯ ДОБАВЛЯЕТСЯ ЗДЕСЬ ". –