我需要将 /tmp/myfile 中包含的所有单引号 ' 替换为 "(双引号)
我正在使用这个
sed -i 's/'/\"/g' /tmp/myfile
Run Code Online (Sandbox Code Playgroud)
和其他组合,但我找不到有效的方法。
请任何帮助。
ilk*_*chu 10
要替换单引号( '),最简单的方法是将 sed 命令放在双引号内并在替换中转义双引号:
$ cat quotes.txt
I'm Alice
$ sed -e "s/'/\"/g" quotes.txt
I"m Alice
Run Code Online (Sandbox Code Playgroud)
请注意,单引号在双引号中并不特殊,因此不能对其进行转义。
相反,如果想要替换反引号( `),正如最初提到的问题,它们可以在单引号中按原样使用:
$ cat ticks.txt
`this is in backticks`
$ sed -e 's/`/"/g' ticks.txt
"this is in backticks"
Run Code Online (Sandbox Code Playgroud)
在双引号内,您需要用反斜杠转义反引号,否则它会启动旧格式的命令替换。
也可以看看:
对于单个字符更改,tr可能是最快的:
tr \' \" <infile >outfile
Run Code Online (Sandbox Code Playgroud)
请注意,这两个引号都需要在 shell 环境中转义。或者在同一个文件中替换,使用sponge(来自moreutils包)
tr \' \" <infile | sponge infile
Run Code Online (Sandbox Code Playgroud)