action: 'blah' 'blah'
需要删除文件中action:
之后的所有内容
sed -i 's/action:\*//g' tes1
这什么都不做。
答案 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:"
的所需行。