一個非常簡單的問題,沒有找到答案。如何在awk中打印出特定的字段?如何在AWK中打印出特定的字段?
awk '/word1/'
,將打印出全文,當我只需要一個word1
。或者我需要一系列圖案(word1 + word2
)才能從文本中打印出來。
一個非常簡單的問題,沒有找到答案。如何在awk中打印出特定的字段?如何在AWK中打印出特定的字段?
awk '/word1/'
,將打印出全文,當我只需要一個word1
。或者我需要一系列圖案(word1 + word2
)才能從文本中打印出來。
那麼,如果該模式是一個字(您想打印,不能,容FS
(輸入字段分隔符))爲什麼不:
awk -v MYPATTERN="INSERT_YOUR_PATTERN" '$0 ~ MYPATTERN { print MYPATTERN }' INPUTFILE
如果你的模式是一個正則表達式:
awk -v MYPATTERN="INSERT_YOUR_PATTERN" '$0 ~ MYPATTERN { print gensub(".*(" MYPATTERN ").*","\\1","1",$0) }' INPUTFILE
如果你的模式,必須在每個SI檢查字段:
awk -v MYPATTERN="INSERT_YOUR_PATTERN" '$0 ~ MYPATTERN {
for (i=1;i<=NF;i++) {
if ($i ~ MYPATTERN) { print "Field " i " in " NR " row matches: " MYPATTERN }
}
}' INPUTFILE
修改上述任何一項以符合您的口味。
像這樣也許:
awk '{split("bla1 bla2 bla3",a," "); print a[1], a[2], a[3]}'
不,我需要awk打印只匹配的「word1」。想象一下,我們有一個文本,我需要找到一串文字並打印出來。我不需要整句話,我只需要那個特定的鏈或詞。 – user1191129 2012-02-05 21:15:01
在AWK的字段以$ 1,$ 2等代表:
$ echo this is a string | awk '{ print $2 }' is
$ 0被整行,$ 1是第一場,$ 2是(或空白), $ NF是最後一個字段,$(NF-1)是第二個到最後一個字段,等等。
你可以嘗試:
awk '/crazy/{ print substr($0, match($0, "crazy"), RLENGTH)}'
我知道)我怎樣才能打印出匹配模式?我有句「你好,瘋狂的世界」。如果找到/瘋狂/我只需要打印出「瘋狂」一詞。 – user1191129 2012-02-05 21:25:56
有沒有一個awk內置變量的「匹配模式」,我想知道? – user1191129 2012-02-05 21:33:45
我知道你可以使用awk做到這一點: 替代將是:
sed -nr "s/.*(PATTERN_TO_MATCH).*/\1/p" file
,或者您可以使用grep -o
你可以給你的輸入更詳細的例子嗎?你是否試圖複製'grep -o'? – Johnsyweb 2012-02-05 21:26:57
我有一個文字「你好,我的朋友們,你在陽光燦爛的日子過得怎麼樣?」。我搜索/如何/字段的字符串,它被發現和awk用這些匹配的模式打印出整個句子。我不需要那種輸出。我只需要這兩個匹配的單詞。所以我的awk輸入應該是這樣的「怎麼樣」 – user1191129 2012-02-05 21:43:03
聽起來就像'grep -o' :) – Johnsyweb 2012-02-05 22:28:01