【发布时间】:2018-05-27 10:29:51
【问题描述】:
我正在尝试编写一个 sed 脚本来查找包含特定模式的每个单词,然后将所有包含该模式的单词添加到前面。例如:
foobarbaz barfoobaz barbazfoo barbaz
可能变成:
quxfoobarbaz quxbarfoobaz quxbarbazfoo barbaz
我了解捕获组和反向引用的基础知识,但我仍然遇到问题。具体来说,我无法让它分别捕获每个完整的单词。
s/\(.*\)men\(.*\)/ not just the \1men\2, but the \1women\2 and \1children\2 too /
我尝试使用 \s,作为许多网站推荐的空格,但 sed 将 \s 视为单独的字符 \ 和 s
【问题讨论】:
-
为什么要专门使用 sed?
-
@glennjackman SO 想要另一个标签,另外我不确定是否应该考虑一些与上下文相关的因素。正则表达式在任何地方都不一样。
-
\s是 POSIX 字符类[:space:]的 GNU 简写,最常用于括号表达式,例如[[:space:]].