使用unix shell脚本打印给定字符串的下一行

时间:2016-03-11 11:34:09

标签: shell unix

我有以下文本文件:

文件:Test.txt

Number of Cars:
    10

Number of Bikes:
    20

Number of Cycles:
    10

注意:现在我想从文件中获取20下一行的自行车数量。

我的尝试:1

sed -n '/Number of Bikes:/{N;p;}' Test.txt

输出:

Number of Bikes:
    20

我的尝试:2

awk '/Number of Bikes/{_=2}_&&_--' Test.txt

输出:

Number of Bikes:
    20

预期输出

20

2 个答案:

答案 0 :(得分:2)

如果您只需要搜索自行车,您可以使用以下行格式并包含以下行,将其移至尾部并获取最后一行,并删除任何前导空格。

grep -A 1 "^Number of Bikes:$" file1|tail -1|sed -e 's/ *//'

答案 1 :(得分:1)

以下是使用awk的方法:

awk 'f && f-- { print $1 } /Number of Bikes:/ { f = 1 }' file

标题匹配时设置标志f。打印下一行的第一个字段,因为这是f为真的唯一行。 f--表示所有后续行都会将f设置为0。

在这种情况下,稍微好一点就是在打印一行后退出:

awk 'f { print $1; exit } /Number of Bikes:/ { f = 1 }' file