如何在文件的行尾添加一些字符串:但也要在 3 个字符之前。
我尝试过,但最终附加在字符串的最后。任何人都可以帮助我吗?
示例: I/P:
file1.txt
内容 :
a
bbbb
vvvvv
cccccc
dd
rules('example here i dont need to get added')
rules('test', [abc,bcd]).
我尝试使用
sed -i '/rules/ s/$/ ***/' file1.txt
输出:
rules('test',[abc,bcd]). ***
但首选o/p:
rules('test',[abc,bcd,***]).
我有两行符合规则,但我需要在第二行中出现我尝试过这个
sed '/rules/ s/\(...\)$/ ,***\1/'
但它不起作用
答案1
这应该有效:
sed -E '/rules/ s/(]\)\.)$/,***\1/' file1.txt
输入:
a
bbbb
vvvvv
cccccc
dd
rules('example here i dont need to get added')
rules('test', [abc,bcd]).
输出:
a
bbbb
vvvvv
cccccc
dd
rules('example here i dont need to get added')
rules('test', [abc,bcd,***]).
通过这种方式,您可以在 stdout 上获得输出。如果要修改该文件,请添加-i
选项:
sed -i -E '/rules/ s/(]\)\.)$/,***\1/' file1.txt
答案2
尝试
'/rules/ s/\(\]..\)$/,***\1/'
作为替换模式。
在哪里
\(
...\)
“grep”中的模式\1
\]..
模式是右括号(不确定是否需要转义)和任意两个字符,***\1
前面加星号和逗号。