![sed 命令替换以“//-----”开头的文件的第一行](https://linux22.com/image/126795/sed%20%E5%91%BD%E4%BB%A4%E6%9B%BF%E6%8D%A2%E4%BB%A5%E2%80%9C%2F%2F-----%E2%80%9D%E5%BC%80%E5%A4%B4%E7%9A%84%E6%96%87%E4%BB%B6%E7%9A%84%E7%AC%AC%E4%B8%80%E8%A1%8C.png)
这个想法是:
如果文件 FILE.txt 的第一行以
//-----------
替换为
//----------- %TAG
为此,我使用了以下命令
sed -i "1s/.\/\/-----------/& %TAG/" FILE.txt
但这没有用。
有什么建议吗?
答案1
你已经很接近了:只需删除.
你所说的以某个字符开头然后 // …
sed -i "1s/\/\/-----------/& %TAG/" FILE.txt
或更改分隔符以减少转义。
sed -i "1s#//-----------#& %TAG#" FILE.txt
答案2
你很接近。开头的点将匹配任何字符,这似乎是不需要的。为了使字符串仅在行开头匹配,正则表达式应以 开头^
:
sed -i "1s#^//-----------#& %TAG#" file.txt
使用 a#
作为s
命令分隔符简化了反引用。