匹配字符串或数字后,如何删除后续行?

潘迪亚

考虑一下我有一个很大的文件,其中包含诸如(的一部分cat file)之类的信息:

33.829037   -0.113737   1.157153
33.830036   -0.113620   1.157157
33.831036   -0.113495   1.157169
33.832035   -0.113365   1.157191
33.833035   -0.113242   1.157228
33.834034   -0.113157   1.157273
33.835033   -0.113071   1.157300

第一列包含按升序排列的浮点数,并且假设我要删除所有行,33.832035因此输出应为:

33.829037   -0.113737   1.157153
33.830036   -0.113620   1.157157
33.831036   -0.113495   1.157169
33.832035   -0.113365   1.157191

如何使用sed适当的文本处理工具来做到这一点

我尝试过在一行中第一次出现字符串后删除所有行,但在我的情况下未成功实现。

斯蒂芬·基特

所链接问题的一种解决方案的略微变体将包括第一条匹配线:

sed '/33.832035/q'

这将打印直到(包括)第一行包含“ 33.832035”的所有行,然后退出。

任何其他文本处理语言都将具有类似的等效语言;例如在AWK中:

awk '1; /33.832035/ { exit }'

这将打印每行(1始终匹配,并使AWK应用其默认操作,即打印当前行),并在当前行匹配“ 33.832035”时退出。

在这两种情况下,您都可以使正则表达式更具限制性,例如 /^33.832035 /只匹配行首的完整字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章