
scriptコマンドでタイムスタンプ付与したターミナルログに対し、シェル芸で制御文字とカラーコードの削除をリアルタイムで行う
ちょっと前に、awkを使ってs…
以下のようなファイルがあったとして、それを行ごとでソートするにはどうすればよいのだろう?とふと思ったので、調べてみた。
●cat /tmp/test2.txt
3 154 2 7 331 4 325 1 14 23 79 2 94 153
結論としては、whileで行ごとに一度sortコマンドでソートが行えるようにしてソートさせればよい。
cat 対象ファイル | while read line; do echo $line | sed 's/ /\n/g' | sort -n | awk '{line=line " " $0} END {print line}' ; done
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test2.txt 3 154 2 7 331 4 325 1 14 23 79 2 94 153 blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test2.txt | while read line; do echo $line | sed 's/ /\n/g' | sort -n | awk '{line=line " " $0} END {print line}' ; done 2 3 4 7 154 325 331 1 2 14 23 79 94 153
2016/08/28 追記
もしくは、第24回シェル芸勉強会 Q7の解法のようにawkでasortを用いるという方法もあるようだ。
awk '{for(i=1;i<=NF;i++)a[i]=$i;asort(a);for(k in a){printf a[k]" "}print ""}'
[root@BS-PUB-CENT7-01 vol.24]# echo b a d c 2 3 1 | awk '{for(i=1;i<=NF;i++)a[i]=$i;asort(a);for(k in a){printf a[k]" "}print ""}' a b c d 1 2 3