簡體   English   中英

在Bash中提取換行符和變量數據之間的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM