一部の行の先頭に表示される文字列を無視してファイルを並べ替える効率的な方法はありますか?ソート時にオプションの先頭文字列を無視する
例えば、私はこのようなファイルのリストを持っていると言う:
FileAardvark
FileBee
N-FileBear
N-FileCat
FileZebra
そして、私は「N-」を無視してソートしたいので、ソートされた結果は
FileAardvark
N-FileBear
FileBee
N-FileCat
FileZebra
だろう私は線を直接編集しないでください。そうしないと、ファイルから「N-」を取り除くことができます。私の最初の考えは、sort
の区切り文字として 'N-'を使用することでしたが、 'N-'は複数の文字であり、必要な列番号が1行ごとに異なるため失敗します。
私の特別なケースでは、すべての文字列が同じ用語で開始されていた(例では、すべてが "File"を最初に持っています)、残りの行全体を並べ替える必要がありました。しかし、私はに関連するすべての文字列の先頭に重複配列を有するに依存することはできません
sed -e 's/File/\x06/g' | sort -t$'\x06' -k2 | sed -e 's/\x06/File/g'
:私は私が望んでいた結果を得た。このsed
/sort
チェーンを使用して終了しました並べ替え、より一般的な方法でこれをどのように達成できますか?
私はこれを正しく追跡していると思います。つまり、 '$ string_to_sort_by'(最初の' sed'の '\ 3')を抽出し、各行に' $ string_to_sort_by $ delimeter'を付加して並べ替え、 '$ delimeter'まで行の先頭を取り除きます。右? – SnoringFrog
Spot on。区切り文字がstring_to_sort_byに存在しないことを確認する必要がありますが、これは唯一の制限です。 –