如何在行尾以及某些 n 个字符之前附加字符串

如何在行尾以及某些 n 个字符之前附加字符串

如何在文件的行尾添加一些字符串:但也要在 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前面加星号和逗号。

相关内容