Linux-admin-sort-command
Linux Admin-sortコマンド
CPUやメモリの可用性が制限された運用サーバーを実行する場合は、これらの大きなファイルをワークステーションにオフロードして、ピーク営業時間中にソート操作を行うことをお勧めします。
Switch | Action |
---|---|
-b | Ignore leading blank lines |
-d | Dictionary order, consider only blanks and alphanumeric characters |
-f | Ignore case, folding lower and upper characters |
-g | General numeric sort |
-M | Month sort |
-h | Human readable numeric sort 1KB, 1MB, 1GB |
-R | Random sort |
-m | Merge already sorted files |
以下の表形式のテキストをコピーして、並べ替えの例に従ってください。 各列がタブ文字で区切られていることを確認してください。
first name | last name | office |
---|---|---|
Ted | Daniel | 101 |
Jenny | Colon | 608 |
Dana | Maxwell | 602 |
Marian | Little | 903 |
Bobbie | Chapman | 403 |
Nicolas | Singleton | 203 |
Dale | Barton | 901 |
Aaron | Dennis | 305 |
Santos | Andrews | 504 |
Jacqueline | Neal | 102 |
Billy | Crawford | 301 |
Rosa | Summers | 405 |
Kellie | Curtis | 903 |
Matt | Davis | 305 |
Gina | Carr | 902 |
Francisco | Gilbert | 101 |
Sidney | Mack | 901 |
Heidi | Simmons | 204 |
Cristina | Torres | 206 |
Sonya | Weaver | 403 |
Donald | Evans | 403 |
Gwendolyn | Chambers | 108 |
Antonia | Lucas | 901 |
Blanche | Hayes | 603 |
Carrie | Todd | 201 |
Terence | Anderson | 501 |
Joan | Parsons | 102 |
Rose | Fisher | 304 |
Malcolm | Matthews | 702 |
最も基本的なデフォルト形式で sort を使用します-
場合によっては、最初の列以外の別の列でファイルを並べ替えたいことがあります。 -t および -k スイッチを使用して、ソートを他の列に適用できます。
注-いくつかの例では、grepにパイプされたcatを使用しています。 これは、パイピングコマンドの概念を示すためでした。 catをgrepに出力すると、複雑なソートを追加しながら、大きなファイルでシステムの負荷を数百倍に増やすことができます。 これにより、ベテランのLinux管理者はうんざりします。
パイプ文字がどのように機能するかについての良いアイデアが得られたので、この貧弱な慣行は後続の章で回避されます。 sortなどのコマンドでシステムリソースを低く保つための鍵は、それらを効率的に使用することを学ぶことです。
これで、リストがオフィス番号でソートされました。 賢明な読者は、-t *スイッチの後、通常とは異なる何かに気付くでしょう。いくつかのスペースのように見えるもので区切られた単一引用符。 これは実際には、シェルに送信されるリテラルのタブ文字でした。 *control + Tab + v のキーの組み合わせを使用して、リテラルTabをBASHシェルに送信できます。
ほとんどのシェルは、Tabキーをコマンドとして解釈します。 たとえば、BASHの自動補完。 シェルには、リテラルのタブ文字を認識するためのエスケープシーケンスが必要です。 これが、タブがLinuxの区切り文字に最適な選択肢ではない理由の1つです。 一般的に、スペースとタブはシェルをスクリプト化するときに問題を引き起こす可能性があるため、避けることをお勧めします。
names.txtファイルを修正しましょう。
これで、テキストファイルの操作がはるかに簡単になります。 誰かがそれを別のアプリケーションのために区切られたタブに戻すことを要求する場合(これは一般的です)、私たちはそのタスクを簡単に達成できます-
一般的なエンドユーザーアプリケーションは、タブを区切り記号として使用するとうまく機能します(会計士は、スプレッドシートで作業している間、データ列を区切るコロンを見たくありません)。 したがって、キャラクターを前後に変換することを学ぶことは良い習慣です。頻繁に発生します。
注-Officeは、Windows上で実行されるグラフィカルユーザーインターフェイスを備えたワードプロセッサとスプレッドシートを使用します。 そのため、Linux管理者は、変換アクションを完了してエンドオフィスユーザーに対応するのが得意です(ほとんどの場合、上司はエンドユーザーになります)。
Bashシェル演算子_ && _も導入しました。 _ && _は、最初のコマンドが「0」の成功ステータスで完了した場合にのみ、2番目のコマンドを実行します。
上記のコードでは、&&と;?の違いに注意してください。 最初のコマンドは、最初のコマンドが正常に完了したときにのみ2番目のコマンドを実行します。単にコマンドを連鎖させます。 これについては、シェルコマンドのスクリプトを作成するときに説明します。