3

UNIX システムでテキスト処理を行っています。このマシンのコマンドラインにアクセスでき、Python、Perl、およびデフォルトのテキスト処理プログラム、awk などがインストールされています。

以下のようなテキストファイルがあります。

2029754527851451717 
2029754527851451717 
2029754527851451717 
2029754527851451717 
2029754527851451717 
2029754527851451717 1232453488239 Tue Mar  3 10:47:44 2009
2029754527851451717 1232453488302 Tue Mar  3 10:47:44 2009
2029754527851451717 1232453488365 Tue Mar  3 10:47:44 2009
2895635937120524206 
2895635937120524206 
2895635937120524206 
2895635937120524206 
2895635937120524206 
2895635937120524206 
5622983575622325494 1232453323986 Thu Feb 12 15:57:49 2009

それは基本的に 3 つの行です: ID ID 日付

2 つの ID と日付を持たないすべての行を削除しようとしています。したがって、仕上げの結果は次のようになります。

2029754527851451717 1232453488239 Tue Mar  3 10:47:44 2009
2029754527851451717 1232453488302 Tue Mar  3 10:47:44 2009
2029754527851451717 1232453488365 Tue Mar  3 10:47:44 2009
5622983575622325494 1232453323986 Thu Feb 12 15:57:49 2009

皆さんはこれをどのように行うことをお勧めしますか? 合計で、テキスト ファイルの長さは約 30,000 行です。

乾杯

イーフ

4

9 に答える 9

14

awk:

awk 'NF > 2' input_file > output_file
于 2009-04-27T14:43:13.410 に答える
5
with open(source_filename) as src:
    with open(dest_filename, 'w') as dst:
        for line in src:
            if len(line.split()) > 1:
                dst.write(line)
于 2009-04-27T14:42:29.260 に答える
4

Perl の場合:

perl -ne 'print if /^([0-9]+\s+){2}.+$/' $filename
于 2009-04-27T14:43:53.517 に答える
-1
sed '/^[0-9]$/d'  filename

(不良行の末尾にスペースがある場合は、パターンを変更する必要がある場合があります)。一致したパターンを省略する grep -v を使用することもできます。

于 2009-04-27T14:44:24.343 に答える