用于更换一切前下面的一段关键字代码效果很好。
sed 's/.*keyword/string-to-be-replaced/'
但是要替换关键字之前的n个字符包括关键字我找不到解决方案。有人有主意吗?
答案1
您只需n
.
点。
n=[num]
sed "s/.\{$n\}keyword/REPLACE/"
...在哪里[num]
是指代表一个正整数应该有效。
请注意,不同于.*keyword
至少在几个重要方面。
.*
适用于出现在之前的任何/所有字符最后的的发生keyword
在sed
的模式空间中,因此如果有多个keywords
一次匹配,.*
会吃掉所有的东西,除了最后一个。.\{[num]\}keyword
将仅匹配第一的可能在模式空间中找到的模式的出现。
.\{[num]\}
将要要求至少[num]
- 计算出现的字符数前关键字来限定匹配,而.*
可以匹配keyword
即使它位于行首。更接近此行为的表达式,因为它将匹配取决于
[num]
之前出现的字符keyword
是...sed "s/.\{0,$n\}keyword/REPLACE/"