Bash 代码中两种模式之间的Grep
我有一个像这样的图案Bash 代码中两种模式之间的Grep,bash,awk,sed,grep,Bash,Awk,Sed,Grep,我有一个像这样的图案 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 'BEGIN {Found
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 'BEGIN {Found = 0;} /^aa :/{Found = 1; } /^};/{Found = 0;} {if(Found) {print $0;}}'
使用grep-oP
可以使用匹配重置\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
}
使用GNU awk进行多字符RS:
$ 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;Pq
在第一场比赛中打印替换项并退出,否则继续下一行。如何运行它?我得到:aa:“这就是我想要的”}代码>它不工作。请在aa:“这是我想要的”
和;}之间加一行代码>并重试
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}'