使用正则表达式删除两个字符串之间的行

时间:2016-09-06 14:44:49

标签: regex bash

我目前正在编写一个脚本,显示我下一次从地铁站出发的离开。

我有一个模式(\b\d$|Westbound),它将捕获行号和方向。但是,如何删除两者之间的线?搜索它并没有给我任何结果。

考虑输出:

5
Ringen via Storo
12 min
Eastbound

4
Vestli via Storo
16:10
Westbound

5
Vestli via Majorstuen
16:11
Eastbound

5
Ringen via Majorstuen
16:12
Westbound

格式为:

Line
Name of line
Time
Direction

问题是,有没有办法使用sed我可以过滤掉所有行,例如Westbound,这样打印的唯一行就是:

5
Ringen via Storo
12 min
Eastbound

5
Vestli via Majorstuen
16:11
Eastbound

这意味着删除以 5 开头并以 Westbound 结尾的任何文本片段。这是否可以使用bash中的正则表达式和内置工具,或者为这个问题找到解决方法会更好吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

执行此操作 -

echo '5
Ringen via Storo
12 min
Eastbound

4
Vestli via Storo
16:10
Westbound

5
Vestli via Majorstuen
16:11
Eastbound

5
Ringen via Majorstuen
16:12
Westbound' | gawk 'BEGIN {
    FS="\n"
    RS=""
}
$4 != "Westbound" {
    print
}'

- 生成以下输出 -

5
Ringen via Storo
12 min
Eastbound
5
Vestli via Majorstuen
16:11
Eastbound