7

Как вы можете использовать sed, чтобы заменить всю первую строку файла этой первой строкой плюс некоторый дополнительный текст? Например, как я могу добавить -foo к файлу, который содержит только одну строку.

testfile содержимого тестового файла :

some-text

testfile содержимого тестового файла :

some-text-foo

3 ответа3

4

Как добавить в первую строку файла?

Как вы можете использовать sed, чтобы заменить всю первую строку файла этой первой строкой плюс некоторый дополнительный текст?

Вот еще один способ добавить строку в конец строки № 1 с помощью SED в Windows, а затем преобразовать ее обратно в формат DOS для символов EOL, т.е. CRLF, а не LF ...

Первая команда (добавьте символы -foo в конец первой строки)

SED -i "1 s|$|-foo|" "C:\Path\testfile.txt"

Вторая команда (преобразовать EOL обратно в перевод строки возврата каретки)

SED -i "s/$/\r/" "C:\Path\testfile.txt"
2
sed '1{s/$/-foo/}' file

1 для первой строки, вы можете использовать num,num для присвоения диапазона, например, 3,5 - это изменить строку 3 на строку 5. s для замены, $ означает конец строки. Если вы хотите изменить файл сразу, используйте параметр -i , в любом случае, используйте его с осторожностью.

awk 'FNR==1{print $0 "-foo";}' file(s)

awk более мощный, но не имеет параметра -i для немедленного изменения файла.

1

Вы можете сделать это с

sed -i '1!b;s/$/\-foo/g' testfile

Это берет файл, смотрит только на первую строку (1!b;) ищет конец строки ($) и заменяет ее на нужную вам строку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .