行末と特定の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,***]).

ルールに一致する2つの行がありますが、2番目の行に表示されるようにする必要があります。これを試しました。

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
  • \]..パターンは、閉じ括弧(エスケープする必要があるかどうかわからない)とランダムな2文字です。
  • ,***\1前にアスタリスクとコンマを付けます。

関連情報