ソースファイルの順序を尊重し、任意の行を印刷します。

ソースファイルの順序を尊重し、任意の行を印刷します。

短い文章(数語の長さ)を含む大きなテキストファイル(〜500,000行)があります。また、ほとんどの行にはいくつかのXMLタグがあります。最後に、テキストファイルがソートされます。今後タグが追加されました! XMLタグを追加するとアルファベット順が変わりますが、これは必須です。

私の質問は次のとおりですソースファイル順にランダムな行を印刷する方法は?

shufコマンドを使用して結果を並べ替えることができます。問題は、タグがソートを混乱させることです。

またpython、テキストファイルをリストにロードし、任意の数値を生成し、それらをソートし、行を取得するインデックスとして使用するスクリプトを作成することもできます。可能であれば、標準の*nixコマンドラインツールを好みます。

サンプル:

<CITY>anaconda</CITY> city is in <STATE>montana</STATE>
let's go to <CITY>rome</CITY>
please find <CITY>berlin</CITY>
where is <CITY>cairo</CITY> in <COUNTRY>egypt</COUNTRY>

2号線と3号線を抜くことができれば本当にいいと思います。 1,3,4号線も良いです。行3、1、4を得ると、それは良くありません。

ベストアンサー1

これを使用してください:

nl file | shuf -n2 | sort -n | cut -f2-
  • nl行に番号を付け、
  • shuf順序を混ぜて出力を2行に制限します(-n)。
  • sort元の順序を復元し、
  • cutcountを削除しますnl

ファイルの2行を元の順序で印刷します。を使用してくださいshuf -n XX任意の数字にすることができます。

おすすめ記事