Как можно использовать sed для замены всей первой строки файла на эту первую строку плюс какой-то дополнительный текст? Например, как можно добавить -foo
файл, содержащий только одну строку.
testfile
начало содержания:
some-text
testfile
Конец содержания:
some-text-foo
решение1
Как добавить к первой строке файла?
Как можно использовать 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 для немедленного изменения файла.
решение3
Вы можете сделать это с помощью
sed -i '1!b;s/$/\-foo/g' testfile
Эта команда берет файл, просматривает только первую строку (1!b;), ищет конец строки ($) и заменяет его нужной вам строкой.