2012-03-03 4 views
4

Есть ли команда sed для добавления строки после согласованной строки? Я пробовал искать, но был немного смущен результатами.Sed Append Line

Basiclly Я хочу, чтобы соответствовать

#address=/doubleclick.net/127.0.0.1 

И добавьте строку ниже него, как

#address=/doubleclick.net/127.0.0.1 

address=/anotherurl/ipaddress 

Возможно ли это?

ответ

10

Вы можете использовать команду a (добавление) в sed:

$ sed -i '/^#address=\/doubleclick.net\/127.0.0.1$/a\ 
> address=/anotherurl/ipaddress' file.txt 

Или вы можете использовать s команду (заменить):

$ sed -i '[email protected]^#address=/doubleclick.net/[email protected]&\naddress=/anotherurl/[email protected]' file.txt 

Примечание:$ и > являются Баш подсказка ,

+0

является то, что две из командной строки или вы просто разнесены его? – awmusic12635

+0

Вы нажимаете ** '' ** после того, как \, bash не запускается немедленно, он ждет еще одну '' '(одинарная кавычка), чтобы соответствовать первому' '' – kev

+0

Спасибо, что он хорошо работал – awmusic12635

0

Это может работать для вас:

echo "#address=/doubleclick.net/127.0.0.1"| 
sed '\|#address=/doubleclick.net/127.0.0.1|a\address=/anotherurl/ipaddress' 
#address=/doubleclick.net/127.0.0.1 
address=/anotherurl/ipaddress 

Вы можете использовать любой разделитель вам нравится в адресе, предваряя \ т.е. \|...| для заменителя команды \ не является необходимым.

Если вы хотите пустую строку, то какой-нибудь текст после матча, использование:

echo "#address=/doubleclick.net/127.0.0.1"| 
sed '\|#address=/doubleclick.net/127.0.0.1|a\\naddress=/anotherurl/ipaddress' 
#address=/doubleclick.net/127.0.0.1 

address=/anotherurl/ipaddress 
+0

У меня проблемы с добавлением этого в скрипт. Он не заменяет его в скрипте, а запускает его вручную. – awmusic12635