【rs】bash/シェルスクリプトマニアックコマンドあれこれ7

rsコマンド

rsコマンドは、行列を入れ替えるコマンドです。
行列を入れ替える処理は、これはもう頻繁に起こるのです。
そのたびに頭を悩ませることになります。
プログラマのほとんどの人は、プログラムを書くよりもGoogleで調べる時間、
ソートのアルゴリズムを最適化するよりも、効率的な行列入れ替えのプログラムに頭を悩ませる時間のほうが多いかもしれません。

結論。
「行列入れ替えのプログラムを書く必要はありません、もうあります」

行列の入れ替え

例えば以下のような表形式のテキストファイルがあるとします。

$ cat sample.txt
1 2 3
4 5 6
7 8 9

では行列を入れ替えます。
rs -Tコマンドで簡単に入れ替えることができます。

$ cat sample.txt | rs -T
1  4  7
2  5  8
3  6  9

awkコマンドで頑張ってみる場合

$ cat sample.txt
1 2 3
4 5 6
7 8 9
$ cat sample.txt | awk '
{ for(i=1;i<=NF;i++){a[NR,i]=$i}} NF>p {p=NF}
END{
  for(j=1;j<=p;j++){str=a[1,j]; for(i=2;i<=NR;i++){str=str" "a[i,j];}
    print str
  }
}'
1 4 7
2 5 8
3 6 9

書籍の紹介

【numfmt】bash/シェルスクリプトマニアックコマンドあれこれ8

【numfmt】bash/シェルスクリプトマニアックコマンドあれこれ8

【column】bash/シェルスクリプトマニアックコマンドあれこれ6

【column】bash/シェルスクリプトマニアックコマンドあれこれ6