鉴于您提供的信息的范围,使用各种工具这是一项非常简单的任务。
$ 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