[英]Grep between two patterns in code
我有一個看起來像這樣的模式。
var a ;
var b;
var obj = {
aa : 'This is what I want'
};
我想要aa : '
和'};
之間的文本'};
可能會發生多次,但是我想擁有第一個。
我嘗試了awk,grep和sed。 但是它們都不給我完美的結果,而是吐出了全部代碼。
到目前為止,我一直在嘗試:
grep -Po "aa : \K.*(?= \'};)"
sed -e 's/aa :\(.*\)\n};/\1/'
awk -F"'" -v RS=";" '/\naa/{print $2;exit}'
請嘗試以下操作:
awk 'BEGIN {Found = 0;} /^aa :/{Found = 1; } /^};/{Found = 0;} {if(Found) {print $0;}}'
使用grep -oP
可以使用match reset \\K
:
grep -oP "\baa\s*:\s*'\K[^']+" file
This is what I want
如果我真的在AWK中彎曲它:
BEGIN {
RS="- -it is not the spoon that bends, it is only yourself"
FS="(aa : '|'};)"
}
{
print $2
}
對於多字符RS,使用GNU awk:
$ awk -v RS="aa[[:space:]]*:[[:space:]]*'[^']*'[[:space:]]*}[[:space:]]*;" -F"'" '{$0=RT; print $2; exit}' file
This is what I want
這是使用sed
的另一種解決方案:
echo $'var obj = {\naa: \'This is what I want\'\n};
var obj2 = {\naa: \'Unwanted\'\n};' | \
sed -ne $'/aa:/ {N;s/aa: \'\\(.*\\)\'\\n.*/\\1/;T;p;q}'
T;p;q
在第一個匹配項上打印替換項並退出,否則繼續下一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.