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 に答える