grep的正则表达式来拉出两个已知串之间的串(grep regex to pull out a st

2019-09-20 23:42发布

我有一个文件的文本字符串,我分析出,我几乎得到了它,但我的思念不知道什么

我使用的基本表达

cat cred.txt | grep -m 1 -o '&CD=[^&]*'

我得到的结果

&CD=u8AA-RaF-97gc_SdZ0J74gc_SdZ0J196gc_SdZ0J211

不想&CD=得到的字符串中的一部分 ,我会怎么做。

我从解析字符串:

webpage.asp?UserName=username&CD=u8AA-RaF-97gc_SdZ0J74gc_SdZ0J196gc_SdZ0J211&Country=USA

Answer 1:

如果你grep知道Perl的正则表达式:

grep -m 1 -oP '(?<=&CD=)[^&]*' cred.txt

如果不:

sed '1s/.*&CD=\([^&]*\).*/\1/' cred.txt


Answer 2:

许多方法对皮肤这只猫。

扩展您的管道:

grep -o 'CD=[^&]*' cred.txt | cut -d= -f2

或做在SED更换:

sed -r 's/.*[&?]CD=([^&]*).*/\1/' cred.txt

或者获得真正看中并解析在AWK实际QUERY_STRING:

awk -F'?' '{ split($2, a, "&"); for(i in a){split(a[i], kv, "="); out[kv[1]]=kv[2];} print out["CD"];}'


文章来源: grep regex to pull out a string between two known strings
标签: regex linux grep