考虑一下我有一个很大的文件,其中包含诸如(的一部分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] 删除。
我来说两句