ソートソートコンテンツファイル

それは、仕事のためにインタビューの様々なの一つに対処する、Linuxのソートに使用されているかどうかをLinuxの基本的なコマンドを習得する必要があります。特に、ソート-kコマンドをLinuxにしばしば混乱している、単にsortコマンドを注意深く見

ソートソートコンテンツファイル

構文:

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件] 

オプション:

-b:忽略每行前面开始的空格字符,空格数量不固定时,该选项几乎是必须要使用的("-n"选项隐含该选项,测试发现都隐含)
-c:检查文件是否已经按照顺序排序,如未排序,会提示从哪一行开始乱序
-C:类似于"-c",只不过不输出任何诊断信息。可以通过退出状态码1判断出文件未排序
-d:只处理英文字母、数字及空格,忽略其他的字符
-f:将小写字母视为大写字母
-h:使用易读性数字(例如:2K、1G)
-i:除了040至176之间的ASCII字符外(八进制0-177),忽略其他的字符(忽略无法打印的字符如退格/换页键/回车)
-k:以哪个区间 (field) 来进行排序
-m:将几个排序好的文件进行合并,只是单纯合并,不做排序
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o<输出文件>:将排序后的结果存入指定的文件
-r:降序
-u:忽略相同行
-t<分隔字符>:指定分隔符,默认的分隔符为空白字符和非空白字符之间的空字符

パラメータは、最初の生データの順序を見て、例に直接提示されていません cat sort.log

a   mac     2000    500 2K
d   winxp   4000    300 3G
e   bsd     1000    600 4M
b   linux   1000    200 5K
f   SUSE    4000    300 6M
g   winxp   500     300 3G
c   win7    2000    100 7G
c   Debian  600     200 8K

列を印刷する1は、順不同であることを始めました sort -c sort.log; echo $?

sort: sort.log:4: disorder: b linux 1000 200 5K 1 

sort -C sort.log; echo $?

1

前記ファイルが既にファイル2、(昇順でASCII文字列全体のための)デフォルトのソートソートされていないことを示す戻り結果 sort sort.log

a   mac     2000    500 2K
b   linux   1000    200 5K
c   Debian  600     200 8K
c   win7    2000    100 7G
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G

3、高エネルギーが来た、人々の混乱k個の文法、構文Kの初見

[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

この構文は一部が修飾オプション部FSTART省略することができ、nおよびRと同様である3つの部分で構成されている2つの部品、開始と終了の開始と終了部分の部分に分割される(「」)コンマのいずれかとすることができます、フェンドは、ドメインの使用を表し、CSTARTは、カウントし始めた最初の数文字からFSTARTフィールドに語っ「ソートの最初の文字を、」同様に、CENDは最後の文字、.CStart、.CEndをソートの最初の数文字の終わりをされて表しこのドメインの末端のドメインにこのドメインの最初から、それぞれ省略されてもよい、CENDは、ドメインの末端を示す、0に設定します。私は、それのいくつかの例を噂を言いました

3列目の3.1ペアは、ASCII文字の並べ替えに合わせて、そうでない場合はnは、ソートされています sort -t $'\t' -k 3 sort.log

b   linux   1000    200 5K
e   bsd     1000    600 4M
c   win7    2000    100 7G
a   mac     2000    500 2K
d   winxp   4000    300 3G
f   SUSE    4000    300 6M
g   winxp   500     300 3G
c   Debian  600     200 8K

3.2 Nを添加した後、値に従ってソート sort -t $'\t' -k 3n sort.log

g   winxp   500     300 3G
c   Debian  600     200 8K
b   linux   1000    200 5K
e   bsd     1000    600 4M
a   mac     2000    500 2K
c   win7    2000    100 7G
d   winxp   4000    300 3G
f   SUSE    4000    300 6M

3.3フェンドは、前部に後方から前方に、注文前後複数の-kできる、-k複数のない指定されていない場合、データは、予想と一致しています sort -t $'\t' -k 3n -k 1 sort.log

g   winxp   500     300 3G
c   Debian  600     200 8K
b   linux   1000    200 5K
e   bsd     1000    600 4M
a   mac     2000    500 2K
c   win7    2000    100 7G
d   winxp   4000    300 3G
f   SUSE    4000    300 6M

前後、-k複数の第3列には、期待に沿って、データを降順の最初の列に応じて、同じです sort -t $'\t' -k 3n -k 1r sort.log

g   winxp   500     300 3G
c   Debian  600     200 8K
e   bsd     1000    600 4M
b   linux   1000    200 5K
c   win7    2000    100 7G
a   mac     2000    500 2K
f   SUSE    4000    300 6M
d   winxp   4000    300 3G

前面から背面への置き換え sort -t $'\t' -k 1 -k 3n sort.log

a   mac     2000    500 2K
b   linux   1000    200 5K
c   Debian  600     200 8K
c   win7    2000    100 7G
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G

sort -t $'\t' -k 1 -k 3nr sort.log

a   mac     2000    500 2K
b   linux   1000    200 5K
c   Debian  600     200 8K
c   win7    2000    100 7G
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G

よるsort -t $'\t' -k 1 -k 3n sort.logsort -t $'\t' -k 1 -k 3nr sort.logFEend指定されたときの背後-k記載有効なわけではない、最初の列に見られる結果に関係なく、同じである3つのが正順に配列されている、またはその逆の順序で、結果が同じで返さsort -t $'\t' -k 1,1 -k 3nr sort.log

a   mac     2000    500 2K
b   linux   1000    200 5K
c   win7    2000    100 7G
c   Debian  600     200 8K
d   winxp   4000    300 3G
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
g   winxp   500     300 3G

3.4適用範囲は、すぐに(オプションのフィールド外での書き込みにダッシュを使用して、プライベートオプションと呼ばれるフィールドの後に(例えば、「N」の「N」の「-k3n」と「-k2nr」、「R」のような)オプションは、次のこうした「-n」として、「 - R」 ) グローバルオプションとして。オプションはプライベートフィールドを割り当てられていない場合、フィールドは、すべてのオプション「bfnrhM」に加え、「B」オプションを含むがこれらに限定されない、グローバルな順序オプションを継承する、残りのオプションは、のために、同等であるかどうかかFSTARTにかわす指定で指定したロールFSTARTのFSTARTを指定するには、「B」オプションは、かわすに作用かわすsort -t $'\t' -k1r,2 sort.log1を見ることができ、2が配置されているフラッシュバック

g   winxp   500     300 3G
f   SUSE    4000    300 6M
e   bsd     1000    600 4M
d   winxp   4000    300 3G
c   win7    2000    100 7G
c   Debian  600     200 8K
b   linux   1000    200 5K
a   mac     2000    500 2K

値によってソートしたときに3.5注nオプションが起因して、指定された「N」オプションは、識別番号とマイナスがある「 - 」遭遇したときの順序は、文字を認識しない場合は、キーのソートへの即時終了につながる、nオプションはしませんでしょうデフォルトを比較するためのクロスドメインの下に、並べ替えは行います「最終順位を」として、行全体の規則に従って、この種のデフォルトの並べ替えを行うために、「ソートの最後の。」

sort -t $'\t' -k3n sort.log等しい第3列において、行全体が最後ASCIIに従って昇順に配置されます

g   winxp   500     300 3G
c   Debian  600     200 8K
b   linux   1000    200 5K
e   bsd     1000    600 4M
a   mac     2000    500 2K
c   win7    2000    100 7G
d   winxp   4000    300 3G
f   SUSE    4000    300 6M

sort -t $'\t' -k3,4n -s sort.log、-sではなく、最終的なソート(1000相先端でその結果、E b)は後に追加されたが、元の順序を維持します

g   winxp   500     300 3G
c   Debian  600     200 8K
e   bsd     1000    600 4M
b   linux   1000    200 5K
a   mac     2000    500 2K
c   win7    2000    100 7G
d   winxp   4000    300 3G
f   SUSE    4000    300 6M

ドメインの最初のn文字でソート3.6 sort -t $'\t' -k2.3,2.3 sort.log第2列の3番目の文字に応じてソート、

c   Debian  600     200 8K
a   mac     2000    500 2K
e   bsd     1000    600 4M
b   linux   1000    200 5K
c   win7    2000    100 7G
d   winxp   4000    300 3G
g   winxp   500     300 3G
f   SUSE    4000    300 6M

4、-h可読性用い番号(例えば:2K、1G) sort -t $'\t' -k5h sort.log

a   mac     2000    500 2K
b   linux   1000    200 5K
c   Debian  600     200 8K
e   bsd     1000    600 4M
f   SUSE    4000    300 6M
d   winxp   4000    300 3G
g   winxp   500     300 3G
c   win7    2000    100 7G
  1. ソート-uおよびソート| uniqの差-kオプションは、ソート指定等価でないかの、uniqのデフォルトは、行全体が重くなることです sort -t $'\t' -k2,2 -u sort.log
e   bsd     1000    600 4M
c   Debian  600     200 8K
b   linux   1000    200 5K
a   mac     2000    500 2K
f   SUSE    4000    300 6M
c   win7    2000    100 7G
d   winxp   4000    300 3G

sort -t $'\t' -k2,2 sort.log|uniq

e   bsd     1000    600 4M
c   Debian  600     200 8K
b   linux   1000    200 5K
a   mac     2000    500 2K
f   SUSE    4000    300 6M
c   win7    2000    100 7G
d   winxp   4000    300 3G
g   winxp   500     300 3G

sort -t $'\t' -k2,2 -u sort.log重くなるため、2列目sort -t $'\t' -k2,2 sort.log|uniq(第2列に係るUNIQ再ことも可能もちろん、)デエンファシス行全体であろう

ソート完成仕上げ、ダニエルはアドバイスを歓迎します

著者:smoke_zlリンクします。https://www.jianshu.com/p/c4d159a98dd8出典:著者によって予約ジェーン帳著作権の文字は、いかなる形で再現され、承認を得るために、作者に連絡して、ソースを明記してください。

おすすめ

転載: www.cnblogs.com/wilson403/p/11162809.html