我在一个文件中有一串文字我正在解析,我几乎得到它但不确定我缺少什么
我正在使用的基本表达是
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
答案 0 :(得分:3)
如果您的grep
知道Perl正则表达式:
grep -m 1 -oP '(?<=&CD=)[^&]*' cred.txt
如果不是:
sed '1s/.*&CD=\([^&]*\).*/\1/' cred.txt
答案 1 :(得分: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"];}'