簡體   English   中英

同一sed命令上的兩種模式匹配

[英]Two pattern match on same sed command

我有以下sed命令:

sed -n '/^out(/{n;p}' ${filename} | sed -n '/format/ s/.*format=//g; s/),$//gp; s/))$//gp'

我試圖做到這一點,如:

sed -n '/^out(/{n;}; /format/ s/.*format=//g; s/),$//gp; s/))$//gp' ${filename}

但這還會顯示我不想要的行(那些不匹配的行)。

我所擁有的是帶有一些字符串的文件,如:

entry(variable=value)),
format(variable=value)),
entry(variable=value)))
out(variable=value)),
format(variable=value)),
...

我只想要out輸入之后出現的格式行。 並刪除結尾的))或),

您可以使用以下sed命令:

sed -nr '/^out[(]/ {n ; s/.*[(]([^)]+)[)].*/\1/p}' your_file

一旦找到out ,它將前進到下一行( n ),並使用帶有p標志的s命令僅提取括號內的內容。

說明:

  • 我用[(]代替\\( 。放在方括號a (通常是指分組,如果要使用文字( ,則需要將其轉義為\\(或將其放在方括號內。大多數RE特殊字符在放入時不需要轉義內括號。
  • ([^)]+)是指基團(以下簡稱“(”在這里被重新元字符不是字面括號),其由一個或多個(的+ )不屬於字符( ^) (字面右括號),則^反轉人物類[ ... ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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