タグ付けされた質問 「sort」

テキストファイルやその他のデータの並べ替え(並べ替えユーティリティなど)。

2
固定テキストから始まり、最初の空白行までのGrep
次のprova.txtようなファイルがあります。 Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random2 random3 random4 extra1 extra2 bla Start to grab from here: 2 fix1 fix2 fix3 fix4 random1546 random2561 extra2 bla bla Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random22131 「ここから始めましょう」から最初の空白行にグレップアウトする必要があります。出力は次のようになります。 Start to grab from …

4
各IPアドレスがログファイルに表示される回数のカウント
次のような形式のファイルがあります。 $ cat file.txt 27.33.65.2 27.33.65.2 58.161.137.7 121.50.198.5 184.173.187.1 184.173.187.1 184.173.187.1 ファイルfile.txtを次のような形式に解析する最良の方法は何ですか? 27.33.65.2: 2 58.161.137.7: 1 121.50.198.5: 1 184.173.187.1: 3 つまり、ファイルをループして、各IPアドレスが出現する回数を数えたいのです。私はすでにそれを実行しているsortので、すべてのIPアドレスは順番に並べられており、互いに直接続いています。
9 awk  sort 

2
comm:ファイルがソートされていません
以前commは2つのソート済みファイルを比較していました。これらのファイルの各行は正の整数です。しかし、結果は comm: file 1 is not in sorted order comm: file 2 is not in sorted order これらの2つのファイルがソートされている場合でも、エラーが発生するのはなぜですか?

3
単一のコマンドでサブディレクトリ内のファイルを見つけてファイル名で並べ替える方法は?
を使用した通常の検索の結果find . ! -path "./build*" -name "*.txt": ./tool/001-sub.txt ./tool/000-main.txt ./zo/001-int.txt ./zo/id/002-and.txt ./as/002-mod.txt と並べ替えるとsort -n: ./as/002-mod.txt ./tool/000-main.txt ./tool/001-sub.txt ./zo/001-int.txt ./zo/id/002-and.txt ただし、望ましい出力は次のとおりです。 ./tool/000-main.txt ./zo/001-int.txt ./tool/001-sub.txt ./zo/id/002-and.txt ./as/002-mod.txt つまり、出力はファイル名のみに基づいてソートされますが、フォルダー情報は出力の一部として維持する必要があります。 編集:サブディレクトリ構造に複数のレベルが含まれる場合があるため、例をより複雑にします。
9 find  filenames  sort 

5
ファイルのセクションを並べ替える
大きなファイルで2つの文字列を並べ替えることはできますか? たとえば、現在のファイルは次のとおりです。 0cf Front Brake 0d0 Rear Brake 0ce Handle Bars HUT 03 VR Controls 009 Vest 001 Belt 002 Body Suit 020 Stereo Enable 003 Flexor 007 Hand Tracker 004 Glove 006 Head Mounted Display 008 Oculometer 00a Animatronic Device 000 Unidentified 021 Display Enable 005 Head Tracker HUT …
8 sort 

8
ファイルのパス名の配列をベース名でソートします
配列に保存されているファイルのパス名のリストがあるとします filearray=("dir1/0010.pdf" "dir2/0003.pdf" "dir3/0040.pdf" ) ファイル名のベース名に従って配列の要素を番号順に並べ替えたい sortedfilearray=("dir2/0003.pdf" "dir1/0010.pdf" "dir3/0040.pdf") どうやってやるの? 私はそれらのベースネーム部分のみをソートできます: basenames=() for file in "${filearray[@]}" do filename=${file##*/} basenames+=(${filename%.*}) done sortedbasenamearr=($(printf '%s\n' "${basenames[@]}" | sort -n)) 私は考えています キーがベース名で値がパス名である連想配列を作成するため、パス名へのアクセスは常にベース名を介して行われます。 ベース名のみの別の配列を作成sortし、ベース名配列に適用します。 ありがとう。
8 bash  filenames  sort  array 

5
ソートを使用してファイル名内の単語をアルファベット順に並べ替えますか?
bashでファイルの名前を一括変更するチュートリアルを読んで、sortコマンドを使用してファイルの内容を並べ替えるとき、2つを組み合わせる方法を理解できませんでした。 プログラムがTagSpacesが物事を処理する方法と同様に、ファイル名内のタグを使用して内容がソートされたディレクトリがあります。ファイル名を作成またはダウンロードするときに、考えられるすべてのタグをファイル名の最後に追加します。次に例を示します。 Sunrise (2) #wallpaper #4k #googleimages.jpg 次に、これらすべてのファイルを調べて名前を変更し、タグの前後に影響を与えずにタグをアルファベット順に並べ替えたいと思います(たとえば、画像のタイトルやファイル拡張子)。したがって、上記は次のようになります。 Sunrise (2) #4k #googleimages #wallpaper.jpg どうすればこれを達成できますか?ファイルの内容ではなくファイル名をのようなコマンドに渡す方法を理解することもできませんsort。その出力をパイプで渡すことができmvます。
8 bash  rename  sort 

5
効率的にマージ/ソート/ユニークな多数のテキストファイル
私は素朴なことを試しています: $ cat * | sort -u > /tmp/bla.txt これは失敗します: -bash: /bin/cat: Argument list too long したがって、(巨大な一時ファイルを作成する)のようなばかげた解決策を避けるために: $ find . -type f -exec cat {} >> /tmp/unsorted.txt \; $ cat /tmp/unsorted.txt | sort -u > /tmp/bla.txt 私は使用してファイルを1つずつ処理することができましたが(これにより、メモリ消費が削減され、ストリーミングメカニズムに近づくはずです)。 $ cat proc.sh #!/bin/sh old=/tmp/old.txt tmp=/tmp/tmp.txt cat $old "$1" | sort -u > …
8 shell  sort  uniq 

2
ソートで「0」の後に非数値レコードが表示されるのはなぜですか?
ファイル名の番号に従ってファイルを並べ替えたいのですが。ここにファイルがあります: $ ls *.f 0.f 13.f 1.f 22.f 4.f abc.f ソート結果: $ ls *.f | sort -t. -k1n 0.f abc.f # note this file! 1.f 4.f 13.f 22.f 私が期待していたのは: $ ls *.f | sort -t. -k1n abc.f 0.f 1.f 4.f 13.f 22.f なぜされたabc.f直後にあった0.fとする前に1.f?で0数字として扱われないからsortでしょうか?私はウェブを検索しましたが、参照は見つかりませんでした。
8 sort 

2
整数を括弧で囲んでスペースなしでファイルをソートする
私はこのようにファイルをソートしようとしています(これはサブルーチン名のリストです) cfn=(1370) __lib_file_MOD_file_open fn=(1368) __universe_MOD_general_boot fn=(916) __universe_MOD_general_main fn=(6142) __grid_var_MOD_get_overlap ... 括弧内の整数による。私は最初にsortコマンドを試しました sort -t '=' -k 2 routine_list.txt しかし、fn =(916)は出力の最後に来ます。 fn=(1368) __universe_MOD_general_boot cfn=(1370) __lib_file_MOD_file_open fn=(6142) __grid_var_MOD_get_overlap ... fn=(916) __universe_MOD_general_main 番号を昇順で並べ替えたい(916-> 1368-> 1370-> ...)いくつかのコマンドまたはオプションを使用するだけで、これを比較的簡単に行うことはできますか?
8 files  sort 

3
Linuxで最速の `uniq`ツール
大きなテキストファイル(1.5 G)があります。 Linuxで最も高速で信頼性の高いツールを教えてください。 私は通常使用します: awk '!x[$0]++' file.txt しかし、htopコマンドを使用すると、メモリ使用量が増加していることがわかります。 巨大なファイルで最も速くて信頼性の高いものを知りたい。 uniq? sort? sed? awk? どうして?
8 sed  awk  memory  sort  uniq 

5
連続する段落のグループ化されたソート(空白行で区切られています)?
私は今、列によるソートの経験がかなりあると思います。ただし、これまでのところ、連続する行を並べ替える方法は見つかりませんでした。 次のようなテキストファイルがあるとします:(もちろん非常に簡略化されています) Echo Alpha Delta Charlie Golf Bravo Hotel Foxtrot さて、各ブロックごとにアルファベット順に行をソートすることは可能ですか?つまり、結果は次のようになります。 Alpha Charlie Delta Echo Bravo Foxtrot Golf Hotel sortmanページで見つけたものから言うと、これは組み込みのUNIX sortコマンドでは不可能かもしれません。それとも、外部/サードパーティのツールに頼ることなく実行できますか?

2
変更時間でファイルをソートする
私はここで多くの質問と回答を見て、 list_dir=`ls -t /path/to/dir/` for i in $list_dir; do または ls -t | while read i; do 簡単に壊れるので、スクリプトでlsを使用しないでください。しかし、最後に変更されたものから最後に変更されたもの(またはその逆)の順にファイルを操作するためのより良い方法を見つけることができません。 私は次のようなものを使用できます: find . -type f -printf '%T@ %p\n' | sort -n | cut -d ' ' -f 2- | while read i; do... ...しかし、これは名前に改行が含まれているファイルでは壊れ、起動するのが非常に醜いです。もっと良い方法はありますか?

5
UNIXユーティリティはどの程度インテリジェントですか?
sort、find、grep、diffなどのUnixユーティリティは、コードをまったく記述しなくても、すばやくタスクを実行するのに非常に便利です。 彼らが内部で使用しているアルゴリズムと、特定のタスクの特定のアルゴリズムをインテリジェントに決定する方法を知りたいのですが?たとえば、sortが巨大な入力ファイルを取得する場合、データサイズごとに異なるアルゴリズムを使用しますか? grepは、さまざまなデータセットを検索しながらアルゴリズムをインテリジェントに切り替えますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.