2012-01-17 2 views
4

Я пытался делать это сам со следующим:предваряя соответствующие строки в файле

for i in $(grep something toprefix.log); do sed -i -e 's/^/prefix/' $i; done 

Прежде всего, извинения за костном головокружения - Я знаю, что выше не работает!

В принципе, я хочу применить префикс к соответствующим строкам в файле журнала, используя grep, и sed или awk.

prefix-matching 
prefix-matching 
not-matching 
prefix-matching 
not-matching 
not-matching 
prefix-matching 

Заранее спасибо.

ответ

3
$ sed -i '/something/s/^/prefix/' toprefix.log 

Edit: Подробнее см http://www.gnu.org/software/sed/manual/html_node/Addresses.html

Edit: Удалены '<' так как '-i' используется.

Edit: Вкладки \t, так

$ sed -i '/something/s/^/prefix\t/' toprefix.log 

добавляет prefix и вкладки.

+0

Благодаря Tichodroma. Я попробовал это и получил «sed: нет входных файлов». Кроме того, извинения - я не упомянул, что «что-то», которое я анализировал с помощью grep, не находится в начале строк в toprefix.log. – rockshore

+0

Не используйте перенаправление ввода '<'. –

+0

'/ something /' ищет «что-то» * в любом месте * в строке. –

1

В awk:

awk '/something/{print "prefix\t"$0;next}1' myfile > mynewfile 
+0

Вам не нужно 'next' после печати префиксной строки, чтобы она не печаталась без префикса тоже? – flesk

+0

Да, я ... спасибо исправлено , –