如何从包含超过一定数量条目的文件中删除行

时间:2013-10-28 18:06:03

标签: awk

我看过类似的问题,关于删除超过一定数量字符的行,我的问题类似但有点棘手。我有一个在分析一些数据后生成的文件,每行应该包含29个数字。例如:

53.0399 0.203827 7.28285 0.0139936 129.537 0.313907 11.3814 0.0137903 355.008 \
0.160464 12.2717 0.120802 55.7404 0.0875189 11.3311 0.0841887 536.66 0.256761 \
19.4495 0.197625 46.4401 2.38957 15.8914 17.1149 240.192 0.270649 19.348 0.230\
402 23001028 23800855
53.4843 0.198886 7.31329 0.0135975 129.215 0.335697 11.3673 0.014766 355.091 0\
.155786 11.9938 0.118147 55.567 0.368255 11.449 0.0842612 536.91 0.251735 18.9\
639 0.184361 47.2451 0.119655 18.6589 0.592563 240.477 0.298805 20.7409 0.2548\
56 23001585
50.7302 0.226066 7.12251 0.0158698 237.335 1.83226 15.4057 0.059467 -164.075 5\
.14639 146.619 1.37761 55.6474 0.289037 11.4864 0.0857042 536.34 0.252356 19.3\
91 0.198221 46.7011 0.139855 20.1464 0.668163 240.664 0.284125 20.3799 0.24696\
23002153

但是每隔一段时间,就会出现一条像第一个一样的行,在分析空文件时最后会有一个8位数字(所以它只返回文件ID号,但不会像新的那样返回新行)。所以我只想找到有这个额外第30个数字的行,并删除那个第30个条目。我想我可以用awk做到这一点,但由于我对它没什么经验,我不知道如何。所以,如果有人能提供帮助,我会很感激。

由于

摘要:想要在文本文件中找到一行中有一个额外条目的行,并删除最后一个额外条目,以便所有行都有相同数量的条目。

1 个答案:

答案 0 :(得分:3)

使用awk,您可以告诉它每条记录有多少个字段。额外内容被忽略

awk '{NF = 29; print}' filename

如果您想将其保存回文件,则需要做一些额外的工作

awk '{NF = 29; print}' filename > filename.new && mv filename.new filename