Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 代码中两种模式之间的Grep_Bash_Awk_Sed_Grep - Fatal编程技术网

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}'