前回の記事では、「sort」コマンドのさまざまな例をカバーしました。見逃した場合は、以下のリンクをフォローして追いつくことができます。この投稿では、前の記事で取り上げたところから続けて、コマンドの残りの側面をカバーします。このようにして、両方の記事がLinuxの「sort」コマンドの包括的なガイドとして機能します。
さらに進む前に、「month.txt」という名前のテキストファイルを作成し、以下のデータで埋めてください。
echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt cat month.txt
15. 月別のファイルコンテンツのソート
次のコマンドは、「month.txt」ファイルの内容を月の略語または名前に基づいて時系列順に並べ替えます。これは、「'-M'
」オプションを使用して、「sort」コマンドにデータを日付として扱い、それに応じて並べ替えるように指示します。
sort -M month.txt
16. ファイルサイズを人が読みやすい形式で出力する
次のコマンドは、「ls」と「sort」コマンドを組み合わせて、2つのタスクを実行します。まず、ユーザーのホームディレクトリの内容を長い形式でリストし、次に、このディレクトリリストを「sort」コマンドにパイプして、ファイルサイズを人が読みやすい形式で表示し、ディレクトリ内の最大および最小のファイルを特定しやすくします。
ls -l /home/$USER | sort -h -k5
17. ソートされたファイルの整合性の確認
前の記事では、例4で`sorted.txt`および例6で`lsl.txt`という2つのテキストファイルを生成しました。`sorted.txt`はすでに並べ替えられていて、`lsl.txt`は並べ替えられていないことを認識しています。
この2つのファイルの並べ替え状態を確認するために、`sort`コマンドを使用します。これにより、`sorted.txt`が正しい順序に保持されていることと、`lsl.txt`が並べ替えられる必要があることを確認できます。
sort -c sorted.txt
これが`0`を返すと、ファイルが並べ替えられていて衝突がないことを意味します。
sort -c lsl.txt
18. 空白でない区切り文字を使用していない場合のデリミタの处理
単語間の区切り文字が空白なら、`sort`コマンドは水平スペースの後のものを新しい単語として自動的に解釈します。しかし、区切り文字が空白でないとどうなるのか?
テキストファイルを考えてください。このファイルの内容は、スペースではなく、'|'
や'\'
、'+'
、'.'
、または...</code>
などで分割されています。
スペースではなく`+`で区切られた内容のテキストファイルを作成します。catコマンドを使用して、このファイルの内容を確認してください。
echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt
このファイルを、数値の1番目のフィールドに基づいて並べ替えます。
sort -t '+' -nk1 delimiter.txt
2番目は、数値ではない4番目のフィールドに基づいて並べ替えます。
タブ19. ファイルサイズによる出力のランダムなソート
ホームディレクトリの
ls -l コマンドの出力を、ランダムな順序で、データの量を表す5番目の列に基づいてソートします。
ls -l /home/avi/ | sort -k5 -R
上記のスクリプトを実行するたびに、異なる結果が得られる可能性があります。結果はランダムに生成されるためです。
前の記事のルール番号 – 2から明らかなように、sortコマンドは大文字よりも小文字で始まる行を優先します。また、前の記事の例 3を確認してください。そこでは、「laptop」という文字列が「LAPTOP」の文字列の前に表示されます。
20. デフォルトのソート設定のオーバーライド
デフォルトのソート設定をオーバーライドする方法は? デフォルトのソート設定をオーバーライドする前に、環境変数'LC_ALL'
を'C'
にエクスポートする必要があります。
これを行うには、以下のコードをコマンドラインプロンプトで実行します。
export LC_ALL=C
そして、テキストファイル「tecmint.txt」をデフォルトのソート設定をオーバーライドしてソートします。
$ sort tecmint.txt
出力を例 3で達成したものと比較することを忘れずに。また、「-f
」または「--ignore-case
」オプションを使用して、より整理された出力を取得できます。
$ sort -f tecmint.txt
21. 単一の操作で2つの入力ファイルを結合する
2つの入力ファイルに対して ‘sort’ を実行し、それらを一度に結合する方法はいかがでしょうか?
2つのテキストファイルを作成しましょう。それぞれ ‘file1.txt’ と ‘file2.txt’ という名前のファイルを作成し、それらにいくつかのデータを追加します。’file1.txt’ には以下に示すような数字を追加します。また、ファイルの内容を確認するために ‘catコマンド’ を使用します。
echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt cat file1.txt
そして、2番目のファイル ‘file2.txt’ にもいくつかのデータを追加します。
echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt cat file2.txt
今、両方のファイルの出力をソートして結合します。
join <(sort -n file1.txt) <(sort file2.txt)
結論
この記事では、Linuxの ‘sort’ コマンドのさまざまな側面を探ってきました。基本的なアルファベット順のソートから始め、数字や日付に基づいたソート、さらにはカスタムデリミタに触れることもしました。また、デフォルトのソート設定をオーバーライドして、自分のニーズに合わせる方法も学びました。
さらに、ファイルが既にソートされているかどうかをチェックする技術や、複数の入力ファイルに対する ‘sort’ 操作の結合についても議論しました。ここで得た知識を活用することで、Linux環境でデータを効率的にソートして整理する強力なツールを手に入れることができます。
この記事が、コマンドラインでの取り組みにとって洞察に富み、有用であることを願っています。Linuxスキルを向上させるために、引き続き ‘sort’ の使い方を探求し、学習し、習得してください。
Source:
https://www.tecmint.com/linux-sort-command-examples/