簡體   English   中英

使用bash(bash awk,sed)讀取文件並提取引號之間的單詞匹配前綴

[英]Using bash (bash awk, sed) read a file and extract word matching prefix between quotes

我有一個包含(每行一個)的文件。 我想從某些模式開始的引號之間提取單詞。 (在我的情況下是C_)

"PATTERNabcde"  sdfds  sdfds
"sdfsdfsdf"   sdfdsf sdfdsf
" PATTERNabc"          dfdsdfd

我想提取: PATTERNabcde PATTERNabc

編輯:
我還想提取不是以$PATTERN開頭的引號之間的單詞。

sed -rn 's/.*?".*?(PATTERN[^"]*)".*/\1/p'
  • -r擴展正則表達式
  • -n禁用自動打印
  • .*? -零個或多個字符,非貪婪
  • ( -打開捕獲組
  • [^"] -除"
  • ) -封閉捕獲組
  • \\1第一個匹配組
  • p打印

我們只用第一組替換每一行。 如果有替換,我們打印。

您可以將grep用作:

grep -Po '(?<=")\s*PATTERN[^"]*(?=")' file

看見

您可以使用awk:

awk -F\" '$2~/^[[:space:]]*PATTERN/{print $2}' file

如果引號中只包含一個單詞,或者可能以pattern開頭的單詞始終是第一個單詞,則此方法有效。 否則,您必須使用for循環:

awk -F\" '{for (i=2;i<=NF;i+=2) if ($i ~/^[[:space:]]*PATTERN/ ) {print $i;next}}'

暫無
暫無

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

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