如何打印使用sed匹配的模式的下一行中的值/值

时间:2017-06-28 01:04:08

标签: python bash awk sed

我正在尝试读取与模式匹配的文件,但我想要的值在下一个连续的行中并且是动态的(意味着不同文件的值的数量不同)。有人可以帮助我使用sed实现这个逻辑吗?

文件1:

hosts:
 - abc
 - def

文件2:

hosts:
 - abc
 - def
 - ghi

我想使用sed获取主机的值。 文件1的sed应该返回

 - abc
 - def

和file2的sed应该返回

 - abc
 - def
 - ghi

感谢。

3 个答案:

答案 0 :(得分:0)

cat file1 | tail -n+2
如果您只有一个行标题然后是主持人,

将会这样做。

答案 1 :(得分:0)

这有点笨拙,但似乎有效:

sed -n -e ':a' -e '/\n$/{s/hosts:\n//; p;}' -e '/hosts/N' -e '/hosts/ b a' filename

答案 2 :(得分:0)

要在hosts和下一个空白行之间打印行(如评论中所述):

sed '/^hosts/,/^$/{//d;}' file