この記事では、Unix の tac コマンド、rev コマンド、paste コマンド、および join コマンドの使用方法を確認します。実例付き。
1. tac コマンド – ファイルを逆方向に印刷 (最終行が最初)
tac という言葉は、cat という言葉の逆です。 tac コマンドの機能も、cat コマンドの逆です。 cat コマンドはファイルを出力します。 tac コマンドは、最後の行を先頭にして逆の順序でファイルを出力します。
$ 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 $ tac thegeekstuff.txt 11. Adding 1's and 0's 10. Windows Sysadmin, reboot etc., 9. Software Development 8. Website Design 7. Productivity (Too many technologies to explore, not much time available) 6. Cool gadgets and websites 5. Storage 4. Security (Firewall, Network, Online Security etc) 3. Hardware 2. Databases Oracle, mySQL etc., 1. Linux Sysadmin, Scripting etc.,
2. rev コマンド – すべての行の文字の順序を逆にする
次の例に示すように、すべての行で文字の順序を逆にします。 rev コマンドは行の各文字を反転するのに対し、tac コマンドはファイルの各行を反転するため、tac コマンドとは異なります。
$ 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
3.貼り付けコマンド – ファイル行をマージ
file1、file2、.. fileN の line1 を出力の line1 に貼り付けます。すべての行で同じことが繰り返されます。各ファイルの行はタブで区切られます。
出力の貼り付け:
$ paste f1 f2 f3 f1-line1<tab>f2-line1<tab>f3-line1 f1-line2<tab>f2-line2<tab>f3-line2 f1-line3<tab>f2-line3<tab>f3-line3 ...
次の例では、3 つの異なるファイルの対応する行が結合され、適切に表示されています。
$ cat emp-number.txt 100 200 300 400 500 $ cat emp-firstname.txt Emma Alex Madison Sanjay Nisha $ cat emp-lastname.txt Thomas Jason Randy Gupta Singh $ paste emp-number.txt emp-firstname.txt emp-lastname.txt 100 Emma Thomas 200 Alex Jason 300 Madison Randy 400 Sanjay Gupta 500 Nisha Singh
4. join – 共通フィールドに基づいて 2 つのファイルの行を結合
フィールドを使用して指定できる共通フィールドに基づいて、2 つのファイルを結合できます。
Syntax: $ join -t':' -1 N -2 N file1 file2
- -t’:’ – :はフィールド セパレータです
- -1 N :1 番目のファイルの N 番目のフィールド
- -2 N :2 番目のファイルの N 番目のフィールド
- file1 file2 :結合するファイル
この例では、共通の従業員番号フィールドを使用して、employee.txt ファイルと Bonus.txt ファイルを結合してみましょう。
$ cat employee.txt 100 Emma Thomas 200 Alex Jason 300 Madison Randy 400 Sanjay Gupta 500 Nisha Singh $ cat bonus.txt $5,000 100 $5,500 200 $6,000 300 $7,000 400 $9,500 500 $ join -1 1 -2 2 employee.txt bonus.txt 100 Emma Thomas $5,000 200 Alex Jason $5,500 300 Madison Randy $6,000 400 Sanjay Gupta $7,000 500 Nisha Singh $9,500