我有以下命令,它為我提供了 Set-Cookie 標頭的值:
curl --head http://www.stackoverflow.com | sed -n "/^Set-Cookie:/p" | cut -c 13-
輸出:
prov=abed7528-7639-e2e3-39a0-361a6d3f7925;域=.stackoverflow.com; 到期=周五,2055 年 1 月 1 日 00:00:00 GMT;路徑=/;僅Http
我需要引號中的輸出,如下所示:
"prov=abed7528-7639-e2e3-39a0-361a6d3f7925; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly"
uj5u.com熱心網友回復:
使用 printf
printf '"%s"\n' "$(curl ...)"
命令替換洗掉任何尾隨的換行符,因此結束引號將在同一行上。
但是,有一個尾隨回車(網路流量通常使用\r\n行尾)。將此添加到管道的末尾
| tr -d '\r'
# or
| sed 's/\r$//'
將管道折疊為一個 sed 命令:
curl -s --head http://www.stackoverflow.com | sed -En '/^Set-Cookie:/ {
s/^.{12}/"/
s/\r$/"/
p
q
}'
uj5u.com熱心網友回復:
如果您的輸入是單行,則將其輸入管道sed 's/\(.*\)/"\1"/'應該可以解決問題。
如果您的文本跨越多行,則不會這樣做,但以下方法會起作用:
… | { printf \"; cat; echo \"; }
……然而,這將保留所有換行符,這也可能是不可取的。要取消最后一個換行符,請改用以下內容:
… | { printf \"; sed '$s/$/"/'; }
或者,作為單個sed命令:
… | sed '1s/^/"/; $s/$/"/'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350251.html
上一篇:將經過時間調整為5小時?
