[英]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
打印 我們只用第一組替換每一行。 如果有替換,我們打印。
您可以使用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.