用 sed 替换插入符号

Posted

技术标签:

【中文标题】用 sed 替换插入符号【英文标题】:Replacing caret characters with sed 【发布时间】:2013-03-19 04:45:32 【问题描述】:

我在一个文件中有如下所示的行:

FA General,1234567^^^^^FA Student Letter- General^<<undefined>>^\\path\to\file.RTF

我正在尝试使用 sed 将插入符号替换为逗号。如果我使用:

sed 's/\^/,/' file.txt

没有任何变化。我也试过了

sed 's/\\^/,/' file.txt
sed 's/^^/,/' file.txt

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

要替换所有插入符号吗?我敢肯定,如果您仔细查看结果,您会发现第一个插入符号已被替换。所以试试这个:

sed -e 's/\^/,/g' file.txt

注意g 表示全局替换,即所有匹配项。

【讨论】:

你是对的。我不敢相信我错过了。非常感谢!【参考方案2】:

我无法复制这个问题

set 'hello^world'
echo $1
sed 's/\^/,/' <<< "$1"

输出

hello^world
hello,world

【讨论】:

【参考方案3】:

或者试试y 命令:

sed 'y/^/,/'

【讨论】:

以上是关于用 sed 替换插入符号的主要内容,如果未能解决你的问题,请参考以下文章

sed 变量替换和Linux的特殊符号大全

如何使 sed 避免特定符号后的替换

Linux:使用sed命令替换时,如何写入Tab符号呢

datagridview 中的自定义插入符号

Linux系列:grep过滤awk拆分sed替换的使用方法与区别

sed的基本用法