cURL和Bash,从字符串中捕获变量和值

时间:2015-10-28 04:22:15

标签: regex bash awk sed grep

使用bash,grep,split,awk或sed,我想捕获

ASPSESSIONIDSUSTQBQS=AAHNFMBAGABAILMKCDGIIMFJ

Set-Cookie: ASPSESSIONIDSUSTQBQS=AAHNFMBAGABAILMKCDGIIMFJ; secure; path=/

'ASPSESSIONID'始终保持相同+ 8个随机字符( SUSTQBQS )。

此变量可能并不总是位于第二列或'Set-Cookie:'

之后

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

使用awk

awk -F"[ ;]" '{print $2}' FileName

将字段分隔符设置为space;。然后打印2nd field

答案 1 :(得分:0)

试试这个sed命令

sed 's/[^:]\+..\([^;]\+\).*/\1/' FileName

<强>解释

[^:]\+      -- Remove the charecters until :
..          -- Remove two characters
\([^;]\+\)  -- Capture the group until ; found 
.*          -- Remove the all character after capture the group

\1          -- Finally print the captured group

输出

ASPSESSIONIDSUSTQBQS=AAHNFMBAGABAILMKCDGIIMFJ

答案 2 :(得分:0)

基本的正则表达式结构在各种程序中是相同的 它可以用文字解释为:冒号/空格(:)和分号(;)之间的文本。其中,正则表达式是:

: ([^;]*);

可以分配给var:

RE=': ([^;]*);'

然后,我们可以在

中使用它

while read l; do
      [[ $l =~ $RE ]] && echo "${BASH_REMATCH[1]}";
done <file  

gawk -v RE="$RE" '$0 ~ RE { print gensub(".*"RE".*","\\1",1); }' file  

sed -rn 's/^.*'"$RE"'.*$/\1/p' file  # using -r avoids the several `\`