regex - 使用sed在行首和行尾添加引号

标签 regex sed

我知道 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/

相关文章:

regex - 我们可以将值的正则表达式放入 DTD 中吗?

regex - 使用 Go Validator v2 转义正则表达式

unix - 如何使用 awk、sed 或其他 unix 命令每隔 n 个间隔获取一个行范围?

linux - bash:在字符串中启动命令。 - 使用 sed

linux - sed 命令的语法

java - 匹配字符串中未被特定字符分隔的特定关键字

c++ - 如何使用正则表达式 C++?

regex - 匹配输入字符串中的 URL 链接

bash - sed 删除所有大写字母

linux - 使用 linux shell 命令将多行输出合并为一行重新格式化报告文件