鑑於您提供的信息的範圍,使用各種工具這是一項非常簡單的任務。
$ awk '$1=="Hardware"{print $5}' sample.txt
awk在表達式上查找匹配項,然後將該行分隔到由空白分隔的字段中。 $1
是第一個單詞,$5
是第五個「單詞」。
$ sed -ne '/^Hardware/s/[^0-9]//gp' sample.txt
sed命令還可以在與特定正則表達式匹配的行上執行命令。在這種情況下,對於「硬件」行,我們用空來替換每個非數字字符,這顯然留下了數字。這按類型而不是字段分開。 (你沒有說明是你所想要的目的。)
最後:
$ readarray -t stuff < sample.txt
$ for line in "${stuff[@]}"; do this=($line); test "${this[0]}" = "Hardware" && echo "${this[4]}"; done
無需使用任何外部工具,這個發現單獨使用bash行。請注意,這種數組引用在舊版Bourne風格的shell中不起作用。但如果你在Linux或OSX中,你的shell可能默認爲bash。
如果你想知道"${this[4]}"
,那麼「4」是因爲bash數組從零開始編號,而awk行是從$1
開始的分詞。
我們也可以在非bash shell中做到這一點,但它會做很多工作,並且可能不是單行程。
你試過了什麼?向我們展示您的工作,我們將幫助您修復錯誤。在您的示例輸入中,「硬件」行的其他可能值是什麼?* – ghoti