如何将reg exp添加到sed?

时间:2019-07-17 23:12:23

标签: awk sed

action: 'blah' 'blah'

需要删除文件中action:之后的所有内容

sed -i 's/action:\*//g' tes1 

这什么都不做。

1 个答案:

答案 0 :(得分:0)

您似乎将 globbing 正则表达式混淆了。在您的问题中,您有:

  

需要删除操作后的所有内容:文件中

sed -i 's/action:\*//g' tes1 
     

这什么都不做。

当然,如果输入是"action: 'blah' 'blah'"则不会。您尝试的唯一匹配项是文字:

action:*

glob ,例如通配符'*'匹配任意数量的字符作为shell表达式,而不是正则表达式。作为正则表达式,控制重复)

您想要做的是匹配"action:"部分,然后匹配其后的所有内容,将所有内容替换为空。一般匹配任意数量的字符,直到行尾为.*$,其中'.'匹配任何字符,重复'*'匹配零个或更多次,最后'$'将表达式锚定到行尾。

以另一种方式,您要在行的开头匹配"action:",然后匹配任意数量的其他字符,并且您希望将所有其他字符替换为空。要将action:锚定到行首,请使用抑音符'^',例如"^action:",以确保您仅匹配"action:"而不匹配"any action:"

将其完全放在一起,您可以使用:

sed -i 's/^action:.*$/action:/' tes1

总和匹配"action: and to end of line"并用"action:"替换整个表达式,使您只包含"action:"的所需行。