0

ウィキペディアの編集履歴にテキスト区切りのファイルがあります。各行は異なるウィキペディアの編集で構成されています。ファイルは、各ページの各編集が独自の行になるようにページタイトルで並べ替えられます(行は7つの異なる変数でタブ区切りされます)。必要なのは、各ページの最初と最後の編集だけです。私が欲しいのはこれに似たファイルで、ウィキペディアのページごとに1行しかなく、各行にはそのページの最初と最後の編集からのすべての情報が含まれています。基本的に、ファイルの最初と最後の編集行を組み合わせた1行。

txtファイルを調べて必要なものを出力する簡単なbashスクリプトまたは短いPythonコード(mac osxターミナルで実行できるもの)があるかどうか疑問に思いました。

助けてくれてありがとう!

ファイルの最初の数行は、ファイルがどのように見えるかを理解するためのものです。

6   233188  AmericanSamoa   2001-01-19T01:12:51Z    ip:office.bomis.com ip:office.bomis.com 1516
6   133180191   AmericanSamoa   2007-05-24T14:41:33Z    Ngaiklin    4477979 5
8   233189  AppliedEthics   2001-01-20T15:01:12Z    ip:pD950754B.dip.t-dialin.net   ip:pD950754B.dip.t-dialin.net   9
8   133180238   AppliedEthics   2007-05-24T14:41:48Z    Ngaiklin    4477979 6
10  233192  AccessibleComputing 2001-01-21T02:12:21Z    RoseParks   99  8
10  133180268   AccessibleComputing 2007-05-24T14:41:58Z    Ngaiklin    4477979 6
12  18201   Anarchism   2002-02-25T15:00:22Z    ip:Conversion_script    ip:Conversion_script    1214
12  19746   Anarchism   2002-02-25T15:43:11Z    ip:140.232.153.45   ip:140.232.153.45   1460
12  19749   Anarchism   2002-02-27T17:34:09Z    ip:24.188.31.147    ip:24.188.31.147    1474

上記の行の出力例は次のようになります。(各ページには200から数百の範囲のさまざまな編集数があり、すべてのページの最初と最後の編集のみが必要であることに注意してください。出力が必要です。次の例のように、すべてのページに、この最初と最後の編集情報を含む1行がありました。

6   233188  AmericanSamoa   2001-01-19T01:12:51Z    ip:office.bomis.com ip:office.bomis.com 1516    2007-05-24T14:41:33Z    Ngaiklin    4477979 5
8   233189  AppliedEthics   2001-01-20T15:01:12Z    ip:pD950754B.dip.t-dialin.net   ip:pD950754B.dip.t-dialin.net   9    2007-05-24T14:41:48Z   Ngaiklin    4477979 6
10  233192  AccessibleComputing 2001-01-21T02:12:21Z    RoseParks   99  8   2007-05-24T14:41:58Z    Ngaiklin    4477979 6
12  18201   Anarchism   2002-02-25T15:00:22Z    ip:Conversion_script    ip:Conversion_script    1214   2002-02-27T17:34:09Z ip:24.188.31.147    ip:24.188.31.147    1474
4

2 に答える 2

1

最初の行に記事名が2回あるため、出力例は少し一貫性がありません。本当に必要がないと仮定し、ファイルが正しくソートされていると仮定すると、次のコマンドがあなたの例で機能します。

sed -r ':r;$!{N;br};s/\n/#/g;s/(^|#)((\S+\s+){2})(\S+\s+)([^#]*).*#(\S+\s+){2}\4/\1\2\4\5/g;s/#/\n/g' history.txt

さらに別の仮定は、ファイルに#文字が含まれていないことです。それ以外の場合は、ファイルに含まれていない別のものに変更#する必要があります。

説明が必要だと思いますが、最初に、必要なことが行われることを確認したいと思います。結果についてコメントしてください:)

PS ファイル全体を一度に処理するため、処理が遅すぎる場合があります。

于 2012-08-24T08:15:53.850 に答える