使用unix shell脚本打印给定字符串的下一行
我有以下文本文件: 文件:Test.txt使用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
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修改了我的答案,以便搜索完整的字符串。^标记行的开头,$结尾。也用该选项更新您的答案,以备将来使用。我在输出中没有得到任何东西。这很奇怪;我是!嘿,那真是太棒了。很好,我没有得到任何输出。这很奇怪;我是!嘿,那真是太棒了。很好