我知道 sed 's/^/"/g'
适用于一行的开头,和 sed 's/$/"/g'
最终有效,但为什么不sed 's/[^$]/"/g'
为两者工作?
最佳答案
[^$]
表示“除美元符号外的任何字符”。这么说sed 's/[^$]/"/g'
您正在用 "
替换所有字符,除了 $
( credits to Ed Morton ):
$ echo 'he^llo$you' | sed 's/[^$]/"/g'
""""""$"""
说:匹配任一
^
或 $
,您需要使用 ( | )
表达:sed 's/\(^\|$\)/"/g' file
或者,如果您有
-r
在您的 sed
:sed -r 's/(^|$)/"/g' file
测试
$ cat a
hello
bye
$ sed -r 's/(^|$)/"/g' a
"hello"
"bye"
关于regex - 使用sed在行首和行尾添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30460096/