tac コマンド 2015/04/03
cat
の反対。入力の行で逆順にして出力する。つまり一番下の行が一番上に来る。
以下のような foo.txt
というファイルがあったら、
abc
def
ghi
以下のようにコマンドを打つと、
$ tac foo.txt
以下のように出力される。
ghi
def
abc
以下のように他のコマンドとパイプでつないでもよい。
$ cat foo.txt | tac
行の順番は変えずに行の中の文字を逆順にする rev
というコマンドもある。
$ ( echo しんぶんし; echo たけやぶ焼けた) | cat
しんぶんし
たけやぶ焼けた
$ ( echo しんぶんし; echo たけやぶ焼けた) | rev
しんぶんし
たけ焼ぶやけた
$ ( echo しんぶんし; echo たけやぶ焼けた) | tac
たけやぶ焼けた
しんぶんし
この例わかりづらいじゃないか。
インストール 2016/03/17
Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。
オプション 2017/02/18
--help
- ヘルプ表示
-r
-s
で指定する区切り文字を正規表現で解釈する-s
<STRING>- 改行ではなく、指定の文字を区切り文字にする
--version
- バージョン表示
--
というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名とみなしてくれるので、
-
で始まるファイル名を扱いたい場合に使うとよい。
移植性 2015/11/04
tac
はCentOSやUbuntuなど(GNU coreutils)にはあるが、MacなどのBSD系にはないらしい。
BSD系では、tac
の代わりに tail -r
を使う。しかし tail -r
は逆にGNU coreutilsでは対応していない。
参考
- ShellScript - 逆順出力 tac と tail -r | Qiita
http://qiita.com/b4b4r07/items/e465efe0b020407bdd44
HOWTO
単語を逆順に並べるには 2016/02/28
-s
というオプションで区切り文字を指定できるので、行ではなく単語を逆順に並べることもできる。
$ echo -n "I'm feeling lucky." | tac -s ' '
lucky.feeling I'm
さらに -r
というオプションを使えば正規表現で区切り文字を指定できる。
$ echo -n "I'm feeling lucky." | tac -r -s '[^a-zA-Z]'
lucky.feeling m I'