2013-07-12 3 views
0

Я ищу способ вставки строки в определенную позицию в файле.Вставить строку в определенную позицию в нескольких файлах

Любопытное, как это: using sed

Но проблема в том, что я хочу, чтобы написать вывод в тот же файл, где я получаю вход и я должен сделать это с более чем одним файлом.

, к сожалению, это не работает: sed '3iline 3' input.txt > input.txt

это будет работать: sed '3iline 3' input.txt > tmp.txt && cat tmp.txt > input.txt

, но я не работает с находкой и Exec больше ...

я надеялся, что-то подобное было бы возможно :

find /usr/local/share/ -iname 'xyz.htm' -exec sed '19i<p>TEXT</p>' {} > {} \; 

но он не работает, как это, поэтому я закончил писать короткий скрипт, который работал. Но это все еще беспокоит меня, потому что я продолжаю думать, что должно быть возможно сделать это коротко (возможно, onliner) и легко.

Я надеюсь, что кто-то может указать мне в правильном направлении.

ответ

2

Если я правильно понял, вам нужен -i вариант. Что будет делать изменения в исходном файле. Он не требует каких-либо других трубопроводов и перенаправления.

sed -i.bak '3iline 3' input.txt 

Это займет резервную копию исходного файла с расширением .bak.

От man sed:

-i[SUFFIX], --in-place[=SUFFIX] 
     edit files in place (makes backup if extension supplied) 
+0

спасибо, это было именно то, что я искал! – cptPH

Смежные вопросы