1

我正在解析的文件中有一串文本,我几乎明白了,但不确定我错过了什么

我使用的基本表达式是

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
4

2 回答 2

3

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

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

如果不:

sed '1s/.*&CD=\([^&]*\).*/\1/' cred.txt
于 2012-08-07T16:20:04.827 回答
0

给这只猫剥皮的方法很多。

扩展你的管道:

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"];}'
于 2012-08-07T16:37:38.340 回答