假设我有一个包含以下信息的大文件(部分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
so 之后的所有行 - 输出应该是:
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
或适当的文本处理工具来做到这一点?
我试过在一行中第一次出现字符串后删除所有行,但在我的案例中没有成功实施。
链接问题的解决方案之一的轻微变体将包括第一个匹配行:
这将打印所有行,包括包含“33.832035”的第一行,然后退出。
任何其他文本处理语言都有类似的等价物;例如在 AWK 中:
这将打印每一行(
1
,它始终匹配并导致 AWK 应用其默认操作,即打印当前行),并在当前行匹配“33.832035”时退出。在这两种情况下,您都可以使正则表达式更具限制性,例如
/^33.832035 /
只匹配行首的完整字段。Awk
方法:示例输出: