我正在尝试更改这样的文件:
Hello
My name is [Bob]
My age is 34
应该变成:
Hello
My name is [Bob]SomeText[Bob]SomeText
My age is 34
然而,为了方便起见,我知道我正在寻找的'字符串'总是会开始
[Bo
如果您需要更多信息,请提供任何帮助,只需说:)
答案 0 :(得分:0)
如果您真的不需要仅使用bash
,则可以使用sed
:
sed 's/\[Bo.*/&SomeText&SomeText/g' filename
输出:
Hello
My name is [Bob]SomeText[Bob]SomeText
My age is 34
答案 1 :(得分:0)
使用sed
。将所有内容从[Bo
匹配到第一个]
并替换它:
sed 's/\(\[Bo[^\]]*\]\)/\1SomeText\1/'
答案 2 :(得分:0)
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
>