0

我已经查看了关于删除具有超过一定数量字符的行的类似问题,我的问题类似但有点棘手。我有一个在分析一些数据后生成的文件,每行应该包含 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 做到这一点,但由于我没有这方面的经验,我不知道怎么做。因此,如果有人可以提供帮助,我将不胜感激。

谢谢

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

4

1 回答 1

3

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

awk '{NF = 29; print}' filename

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

awk '{NF = 29; print}' filename > filename.new && mv filename.new filename
于 2013-10-28T18:10:46.870 回答