[英]Extract string between newline and variable data in Bash
作為負載測試的一部分,我有一個包含生成的請求列表的文件。 格式如下,因為有效負載在兩個換行符之間; 表示新請求開始的GET。 我只想提取有效載荷。
Connection: false
Content-Length: 25
foo=bar1&foo2=bar2
GET http://localhost:1080/dasistgut
我嘗試了幾種組合,但均未成功:
grep -zoP "(?<=(\n)).*(?<=(\GET))" sample.txt
grep -zoP "(?<=(\n)).*(?<=(\n))" sample.txt
grep -zoP "(?<=(\n)).*(?<=\n)" sample.txt
預期輸出: foo=bar1&foo2=bar2
您可以使用以下gnu grep
:
var=$(grep -zoP '.+(?=\R{2}GET )' file)
echo "$var"
foo=bar1&foo2=bar2
前瞻斷言(?=\\R{2}GET )
確保輸入具有精確的2個換行符( \\R
),后跟當前位置之前的"GET "
。
基於awk
的替代解決方案:
awk '!NF{++n; next} n && /^GET /{print p} {p=$0; n=0}' file
foo=bar1&foo2=bar2
使用awk
匹配空白行,獲取下一行並打印,然后跳過下一行(應始終為空白)。
awk '/^$/ { getline; print; getline; }' sample.text
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.