如何使用 sed 将文件的第一行替换为第一行和一些附加文本?例如,如何将-foo
仅包含一行的内容附加到文件中。
testfile
内容开始:
some-text
testfile
内容结束:
some-text-foo
答案1
如何附加到文件的第一行?
如何使用 sed 将文件的整个第一行替换为第一行和一些附加文本?
这是另一种方法,在 Windows 上使用 SED 将字符串附加到行号 1 的末尾,然后将其转换回 EOL 字符的 DOS 格式,即 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;),查找行尾 ($) 并将其替换为您想要的字符串。