使用sed替换关键字之前的n个字符(包括关键字)?

使用sed替换关键字之前的n个字符(包括关键字)?

用于更换一切下面的一段关键字代码效果很好。

sed 's/.*keyword/string-to-be-replaced/'

但是要替换关键字之前的n个字符包括关键字我找不到解决方案。有人有主意吗?

答案1

您只需n .点。

n=[num]
sed "s/.\{$n\}keyword/REPLACE/"

...在哪里[num]是指代表一个正整数应该有效。

请注意,不同于.*keyword至少在几个重要方面。

  1. .*适用于出现在之前的任何/所有字符最后的的发生keywordsed的模式空间中,因此如果有多个keywords一次匹配,.*会吃掉所有的东西,除了最后一个。

    • .\{[num]\}keyword将仅匹配第一的可能在模式空间中找到的模式的出现。
  2. .\{[num]\}将要要求至少[num]- 计算出现的字符数关键字来限定匹配,而.*可以匹配keyword即使它位于行首。

    • 更接近此行为的表达式,因为它将匹配取决于[num]之前出现的字符keyword是...

      sed "s/.\{0,$n\}keyword/REPLACE/"
      

相关内容