Sed заменить строку в первой строке

Как заменить строку, но только в первой строке файла, используя программу "sed"?

Команды s/test/blah/1 и 1s/test/blah/, похоже, не работают. Есть ли другой способ?

Ответ 1

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

sed -i '1!b;s/test/blah/' file

заменит первый test на blah только на первую строку.

Или если вы просто хотите изменить первую строку:

sed -i '1c\replacement' file 

Ответ 2

Это будет сделано:

sed -i '1s/^.*$/Newline/' textfile.txt

В противном случае убедитесь, что совпадение уникально только для линии 1:

sed -i 's/this is line one and its unique/Changed line one to this string/' filename.txt

Опция -i записывает изменение в файл вместо того, чтобы просто выводить вывод на стандартный вывод.

ИЗМЕНИТЬ:

Для замены всей строки путем сопоставления общей строки будет:

sed -i 's/^.*COMMONSTRING$/Newline/'

Где ^ соответствует началу строки, $ соответствует концу строки, а .* соответствует всем upto COMMONSTRING

Ответ 3

это заменяет все совпадения, а не только первое совпадение, только в первой строке, конечно:

 sed -i '1s/test/blah/g' file

/g сделал трюк, чтобы заменить более одного совпадения, если таковое существует.