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

grepPerl 正規表現を知っている場合:

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 に答える