【问题标题】:print line before string matchs in 2 successives lines [closed]在 2 个连续行中的字符串匹配之前打印行 [关闭]
【发布时间】:2020-01-20 08:58:34
【问题描述】:

我使用的是 Linux,我需要在我的文件中打印与相同字符串匹配的行和 2 个连续行。

这是我的例子: 当两辆车以相同的速度行驶时,我想显示车速+时间

我的文件:

时间:10:15

car1 - 速度 120

car2 - 速度 120

时间:10:17

car16 - 速度 89

car3 - 速度 102

时间:10:26

car7 - 速度 56

car15 - 速度 56

时间:10:36

car9 - 速度 115

car4 - 速度 100


因此,我想要的结果是:

时间:10:15

car1 - 速度 120

car2 - 速度 120

时间:10:26

car7 - 速度 56

car15 - 速度 56


非常感谢任何帮助。

提前谢谢你

【问题讨论】:

  • 你到底尝试了什么?你有sn-p吗?
  • 这真的是您的输入文件的样子吗?包括项目符号和水平线?可能不会,但您可以使用代码块将其格式化为您输入的样子吗?
  • 你用的是什么外壳?重击?由于您同时列出了 Python 和 shell,原则上您是否可以使用任何语言来解决您的问题(例如 Perl)?
  • bash 没问题,如果可能的话,python 就好了。

标签: python linux bash shell


【解决方案1】:

使用sed 很容易——我们可以使用N将下一行输入附加到模式空间)读取这三行,以及一个反向引用 em> \1 测试速度是否相等:

sed -n '/time/N;/speed/N;/speed \(.*\)\n.*speed \1$/p'

【讨论】:

  • 好点 - 我会更正我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 2019-12-26
  • 2020-03-30
  • 2017-05-27
相关资源
最近更新 更多