Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用unix shell脚本打印给定字符串的下一行_Shell_Unix - Fatal编程技术网

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

使用unix shell脚本打印给定字符串的下一行,shell,unix,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 Number of Bikes: 20 我的尝试:2 awk '/Number o

我有以下文本文件:

文件: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
Number of Bikes:
    20
我的尝试:2

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

Number of Bikes:
    20
Number of Bikes:
    20
预期产出

20

以下是一种使用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

以下是一种使用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

如果您只需要搜索自行车,您可以grep该行并包含下一行,将其输送到tail并获取最后一行,并删除任何前导空格

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

如果您只需要搜索自行车,您可以grep该行并包含下一行,将其输送到tail并获取最后一行,并删除任何前导空格

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


如果你只需要寻找自行车,也许“grep-a1”自行车:$“file1 | tail-1 | sed-e's/*/'”就足够了?@kometen,不。我想给出完整的字符串。@kometen这看起来是显而易见的答案。因此,将其添加为答案,而不仅仅是评论。@pmakholm谢谢。已经这样做了。如果你只需要寻找自行车,也许“grep-a1”自行车:$“file1 | tail-1 | sed-e's/*/'”就足够了?@kometen,不。我想给出完整的字符串。@kometen这看起来是显而易见的答案。因此,将其添加为答案,而不仅仅是评论。@pmakholm谢谢。已经这样做了。如果我想检查完整的字符串
自行车数量:
,那么@MAK如果搜索字符串是
自行车数量:
?或者汽车和自行车?这在将来不会改变。@MAK修改了我的答案,以便搜索完整的字符串。^标记行的开头,$结尾。也使用该选项更新您的答案,以备将来使用。如果我要检查完整字符串
自行车数量:
than?@MAK如果搜索字符串是
自行车数量:
?或者汽车和自行车?这在将来不会改变。@MAK修改了我的答案,以便搜索完整的字符串。^标记行的开头,$结尾。也用该选项更新您的答案,以备将来使用。我在输出中没有得到任何东西。这很奇怪;我是!嘿,那真是太棒了。很好,我没有得到任何输出。这很奇怪;我是!嘿,那真是太棒了。很好