次のようなファイルを変更しようとしています。
Hello
My name is [Bob]
My age is 34
次のようになります。
Hello
My name is [Bob]SomeText[Bob]SomeText
My age is 34
ただし、簡単にするために、探している「文字列」は常にで始まることを知っています
[Bo
さらに情報が必要な場合は、ただ言ってください:)
perl -pe 'm/(\[Bo.*?\])/g;$a=$1;s/(.*\[Bo.*?\])/$1sometext${a}sometext/g;' your_file
上記のソリューションは、[Bo.*] が常に行末にある場合に機能します。テスト済み:
> cat temp
Hello
My name is [Bob]
My age is 34
> perl -pe 'm/(\[Bo.*?\])/g;$a=$1;s/(.*\[Bo.*?\])/$1sometext${a}sometext/g;' temp
Hello
My name is [Bob]sometext[Bob]sometext
My age is 34
>
bash
本当にのみを使用する必要がない場合は、次を使用できますsed
。
sed 's/\[Bo.*/&SomeText&SomeText/g' filename
出力:
Hello
My name is [Bob]SomeText[Bob]SomeText
My age is 34
を使用しsed
ます。[Bo
最初のフォームまでのすべてを一致させ、]
それを置き換えます。
sed 's/\(\[Bo[^\]]*\]\)/\1SomeText\1/'