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

rev コマンド

すべての行の文字の順序を逆にする

次の例に示すように、すべての行で文字の順序を逆にします。
tac コマンドはファイルの各行を上下反転しますが、
rev コマンドは行の各文字の前後を反転します。

普通にcatします。

$ cat thegeekstuff.txt
1. Linux Sysadmin, Scripting etc.,
2. Databases Oracle, mySQL etc.,
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10. Windows Sysadmin, reboot etc.,
11. Adding 1's and 0's

revコマンドを実行した結果

$ rev thegeekstuff.txt
,.cte gnitpircS ,nimdasyS xuniL .1
,.cte LQSym ,elcarO sesabataD .2
erawdraH .3
)cte ytiruceS enilnO ,krowteN ,llaweriF( ytiruceS .4
egarotS .5
setisbew dna stegdag looC .6
)elbaliava emit hcum ton ,erolpxe ot seigolonhcet ynam ooT( ytivitcudorP .7
ngiseD etisbeW .8
tnempoleveD erawtfoS .9
,.cte toober ,nimdasyS swodniW .01
s'0 dna s'1 gniddA .11

「rev」は「cat」と同じく先頭行から順番に表示しますが、表示する文字の並びが行の末尾から逆に並び替えて表示を行います。

ヒント
「rev」は「reverse」の略です。

find の出力結果を拡張子でソート

「rev」コマンドの活用場面を思い浮かべることはできませんでしたが、下記の様にすることで findで検索した結果のファイルを拡張子単位でソートをすることができます。

$ find . -type f | rev | sort | rev

実行結果

./file1.c
./dir/file2.c
./dir2file3.c
./header1.h
./header2.h
./dir2/header3.h
./text1.txt
./text2.txt
./dir/text3.txr

ドメイン名リストのソート

www1・www2 などのサブドメインではなく、example.com や example.net などのドメインでソートしたいとする。
その場合、rev コマンドで逆順にし、ソートし、再度 rev コマンドで戻すとよい。

ドメイン名リスト

www1.example.com
www-a.example-b.com
www1.example.net
www-b.example-b.com
www2.example.com
www2.example.net

実行結果

$ cat foo.txt | rev | sort | rev
www-a.example-b.com
www-b.example-b.com
www1.example.com
www2.example.com
www1.example.net
www2.example.net

書籍の紹介

【jot】Bash/シェルスクリプトマニアックコマンドあれこれ3

【jot】Bash/シェルスクリプトマニアックコマンドあれこれ3

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

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