我正在尝试编写一个bash脚本,用单引号将文件中包含的单词括起来。
单词 - 你好089
结果 - "你好089",
我尝试了以下正则表达式,但它不起作用。这适用于带有查找和替换功能的记事本++。我不确定如何调整它以使其在 bash 脚本中工作。
sed "s/(.+)/'$1',/g" file.txt > result.txt
替换反向引用(也称为占位符)是用n
语法定义的,而不是$n
(这是类似perl的反向引用语法)。
请注意,此处不需要组,因为您希望用单引号将整行括起来。这也是为什么您不需要g
标志的原因,它们仅在您计划在同一行、输入字符串上查找多个匹配项时才是必需的。
您可以使用以下 POSIX BRE 和 ERE(带有-E
的解决方案):
sed "s/..*/'&',/" file.txt > result.txt
sed -E "s/.+/'&',/" file.txt > result.txt
在 POSIX BRE(第一个)解决方案中,..*
匹配任何字符,然后匹配任何 0 个或多个字符(从而模拟.+
常见的 PCRE 模式)。POSIX ERE(第二个)解决方案使用.+
模式来执行相同的操作。右侧的&
用于插入整个匹配项(又名