最後のパターン一致の前にファイルの2行にテキストを追加します。

最後のパターン一致の前にファイルの2行にテキストを追加します。

TEXTmyfile.txtテキストが見つかった最後の場所に複数行の文字列を追加する必要があります# My Search

一般的なパターン交換の場合は大丈夫ですsediしかし、.で一致より2行上に移動する方法がわかりませんsed

はいmyfile.txt:

text1
text2
#
# My Search
#
text4
text5
#
# My Search
#
text6

TEXT良い:

TEXT="
[my search]
home=/var/home
string=random

"

myfile.txt終わりを見てください:

text1
text2
#
# My Search
#
text4
text5

[my search]
home=/var/home
string=random

#
# My Search
#
text6

ベストアンサー1

grep -n行番号を抽出し、それをsedアドレスに使用してテキストを挿入するには、テキストを正しく引用する必要があります。つまり、各改行の前にはバックスラッシュが必要です。

line=$(grep -n '# My Search' myfile.txt | tail -n1 | cut -f1 -d:)
((--line))
text=${TEXT//$'\n'/$'\\\n'}
text=${text%$'\\\n'}$'\n'

sed "$line i \\
$text" myfile.txt

おすすめ記事