我需要从这个字符串[%L10n.msg('foo')%]
中获取内部文本[%L10n.msg('
,所以')%]
在这个例子中我应该得到foo
.
我找到了很多例子,但没有一个有效,我尝试了这样的方法:
echo "[%L10n.msg('foo')%]" | sed -n -e '/[%L10n.msg(\'/,/\')%]/p'
但我收到错误
bash:意外标记“)”附近出现语法错误
更新: 想象一下我的字符串可以在这个字符串中:
Some ' very [%% ]long ' text [%L10n.msg('foo')%] with lot of [%characters%]
测试文件:
Some ' very [%% ]long ' text [%L10n.msg('foo')%] with lot of [%characters%]
fefe
<a class="w3-bar-item w3-button" href='/html/html_examples.asp'>HTML Examples</a>
<a class="w3-bar-item w3-button" href='/html/html_exercises.asp'>HTML Exercises</a>
fefrheerghirlg wgwa g [%L10n.msg('foo')%]
<>"
答案1
怎么样
$ echo "[%L10n.msg('foo')%]" | sed "s/\[%L10n.msg('//; s/')%]//"
foo
或者,使用您的新输入样本,
echo "Some ' very [%% ]long ' text [%L10n.msg('foo')%] with lot of [%characters%]" | sed "s/^.*\[%L10n.msg('//; s/')%].*$//"
foo
或者,第二次更改输入(读取测试文件现在),尝试
sed -n "/^.*\[%L10n.msg('/ {s///; s/')%].*$//;p}" file
foo
foo