31テキスト処理(並べ替え)

基本形 行を並べ替える

sort [オプション] [ファイルのパス]

-n  数値の順に並べ替える

-r  降順・逆順に並べ替える

-k 比較開始フィールド番号[,比較終了フィールド番号]



viで並べ替えテスト用ファイル(test.txt)を作る(作っていないので!!)



sortコマンドを試してみる



オプションなしでは文字コード順に並べ替えられてしまいます

100が22の前に来て違和感がある

よって nオプションを指定する

逆順は nrオプション指定にしないといけない






指定したフィールドだけを基準に並べ替えることも可能

例えば第2フィールドから第3フィールドまでを基準に並べ替えるには

-k 2,3   と指定する

(比較終了フィールド番号を省略すると行末までが対象となる)

(フィールドの区切り文字はデフォルトで空白文字(スペースもしくはタブ))

(-tオプションでフィールド区切り文字は変更できる)


customer.txtファイルのフォーマットは「メイルアドレス:年齢:家族の人数」である

年齢を基準に並べ替える




年齢が同じ場合には家族の人数が少ない順に並べ替える



-k 2.3 と -k2 で結果は同じです!


【問題31】

customer.txt の最後の行に viで mitsuya@gmail.com:5:1 を追加してください。  p.80

以下の結果を得るためのコマンド●はどのような構成になるでしょうか

[guest@icv99 ~]$  ●●●●●●●●●●
mitsuya@gmail.com:5:1
makoto@gmail.com:21:3 ←
tanaka@gmail.com:21:2 ←  
sora@sky.com:32:4
eto@gmail.com:33:3
[guest@icv99 ~]$

上記の結果は←部分に違和感があります!!
第3フィールドも数値順に並べるにはどうすればよいでしょうか

この書き方は重要です!

[guest@icv99 ~]$  ●●●●●●●●●●
mitsuya@gmail.com:5:1
tanaka@gmail.com:21:2 ←  
makoto@gmail.com:21:3 ←
sora@sky.com:32:4
eto@gmail.com:33:3
[guest@icv99 ~]$

実行コマンドと実行結果をファイル
Question31.txt
に保存して、提出サーバへ送信すること。