2015-12-01 2 views
0

Я пытаюсь прочитать содержимое файла test.txt и записать в другой файл Report.html только в первом совпадении строки. Что-то вроде:Shell script Sed - Как читать файл и писать в другом файле только в первом вхождении строки?

sed -i '/, past/r test.txt' Report.html 

Эта команда выше читает все строки «в прошлом» и в том числе содержание test.txt во всех строках «в прошлом». Но я просто хочу, чтобы это включало в первое вхождение строки «прошлое». Команда, подобная:

sed -i '0,/, past/r test.txt' Report.html 

Вышеприведенная команда не работает, какой правильный синтаксис для этого?

+2

''0, /, прошлое/r test.txt'' работает с gnu-sed – anubhava

+0

Не работает для меня, под cygwin. Нет выхода. –

ответ

1

Как СЭД r команда не принимает диапазон, и СЭД управления не иначе позволяют «первым только», я думаю, что вам нужно «вычислить» номер строки интереса и корма, что СЭД:

sed -i $(awk '/, past/{print NR;exit}' Report.html)'r test.txt' Report.html 

Только сделайте это, если вы гарантировали, что , past встречается в Report.html где-то. Если нет, сохраните результат $(awk...) в переменной и сначала проверьте его. В противном случае sed будет включать в себя для каждую линию.

+0

Большое спасибо, это работает для меня !! – Rakiz

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