sed 替换为反斜杠、双引号、单引号
sed replace with backslash, double quote, single quote
你能给出一个 sed 命令来找到 \"
并在文件中用 \'
替换吗?
例如行:
LOG_FN=\"file_name\"
会变成
LOG_FN=\'file_name\'
通过使用这个 template:
sed -i 's/old-text/new-text/g' input.txt
我尝试了以下 sed 命令:
sed -i 's/\\"/\\\'/g' input.txt
sed -i "s/\\"/\\'/g" input.txt
不幸的是,它们失败了,因为我正在寻找 \"
的字符串替换,而我尝试更改单个 "
个字符。
单引号内的单引号无法转义。您的第二次尝试需要更多反斜杠:请记住,在双引号内,shell 处理一层反斜杠,因此您必须将每个反斜杠加倍,这样才能达到 sed
.
sed "s/\\\"/\\\\'/g" input.txt
shell处理完双引号字符串后,最终执行的脚本为
s/\"/\\'/g
其中第一对反斜杠在匹配的正则表达式中生成一个文字反斜杠,替换中的每对反斜杠在输出中生成一个文字反斜杠。
你能给出一个 sed 命令来找到 \"
并在文件中用 \'
替换吗?
例如行:
LOG_FN=\"file_name\"
会变成
LOG_FN=\'file_name\'
通过使用这个 template:
sed -i 's/old-text/new-text/g' input.txt
我尝试了以下 sed 命令:
sed -i 's/\\"/\\\'/g' input.txt
sed -i "s/\\"/\\'/g" input.txt
不幸的是,它们失败了,因为我正在寻找 \"
的字符串替换,而我尝试更改单个 "
个字符。
单引号内的单引号无法转义。您的第二次尝试需要更多反斜杠:请记住,在双引号内,shell 处理一层反斜杠,因此您必须将每个反斜杠加倍,这样才能达到 sed
.
sed "s/\\\"/\\\\'/g" input.txt
shell处理完双引号字符串后,最终执行的脚本为
s/\"/\\'/g
其中第一对反斜杠在匹配的正则表达式中生成一个文字反斜杠,替换中的每对反斜杠在输出中生成一个文字反斜杠。