はじめに

こんにちは!今回はrevコマンドについて解説します。

revは、行の文字を逆順で表示するコマンドです。tacはファイルの行順を反転させるけど、revは行内の文字を反転させる感じ。「文字列を反転させたい」「テキストを逆向きにしたい」という時に活躍します。

使う頻度は少なめですが、テキスト加工やテスト、データ変換の時に意外と役立つコマンドですよ。

revコマンドとは

revは、ファイルの各行を文字単位で逆順に出力する外部コマンドです。“reverse"の略ですね。

各行の最後の文字が最初に表示され、最初の文字が最後に表示されます。つまり「各行を左右反転する」ようなイメージです。

基本構文

1
rev [オプション] [ファイル名]

ファイル名を指定しないと標準入力から読み込みます。

主なオプション

オプション 説明
-h ヘルプを表示
-V バージョンを表示

revはシンプルで、オプションはほぼありません。

使用例

例1: 基本的な使い方

1
echo "Hello World" | rev

実行結果:

1
dlroW olleH

文字が逆順で表示されます。

例2: 複数行を逆順にする

1
echo -e "ABC\nDEF\nGHI" | rev

実行結果:

1
2
3
CBA
FED
IHG

各行が独立して逆順になります。

例3: ファイルを指定して処理

1
2
3
4
5
6
7
cat << 'EOF' > /tmp/text.txt
apple
banana
cherry
EOF

rev /tmp/text.txt

実行結果:

1
2
3
elppа
ananab
yrrehc

ファイルの各行を逆順に。

例4: パリンドローム判定

1
echo "racecar" | rev

実行結果:

1
racecar

元の文字列と同じなら回文です。

例5: 数字を逆順に

1
echo "123456789" | rev

実行結果:

1
987654321

数字列を反転させます。

例6: URLを逆順に

1
echo "https://example.com" | rev

実行結果:

1
moc.elpmaxe//:sptth

URLを文字単位で反転。

例7: CSVの各フィールドを逆順に

1
echo "Alice,Bob,Charlie" | rev

実行結果:

1
eilrahC,boB,ecilA

名前がすべて逆順になります。

例8: 複数ファイルを処理

1
rev /tmp/text.txt /tmp/numbers.txt

実行結果:

1
2
(text.txt の各行を逆順)
(numbers.txt の各行を逆順)

複数ファイルを順番に処理。

例9: パイプで他のコマンドと組み合わせ

1
echo "Hello" | rev | rev

実行結果:

1
Hello

2回反転すると元に戻ります。

例10: 特定パターンの検出

1
2
3
4
5
cat << 'EOF' | rev | grep "123"
abc321def
xyz123uvw
ghi987jkl
EOF

実行結果:

1
wvu321zyx

反転後に検索することで新しいパターンマッチング。

Tips・注意点

tacとrevの違い

1
2
3
4
5
# tac: ファイルの行を逆順(最後の行から)
tac /tmp/file.txt

# rev: 各行の文字を逆順(左右反転)
rev /tmp/file.txt

行の順序か、文字の順序かが異なります。

日本語との組み合わせ

1
echo "こんにちは" | rev

出力:

1
はんちこ

日本語も文字単位で反転します。

回文判定スクリプト

1
2
3
4
text="racecar"
if [ "$text" = "$(echo $text | rev)" ]; then
  echo "This is a palindrome!"
fi

元の文字列と反転後が同じなら回文です。

パフォーマンス

revは非常に軽量で、大きなファイルでも高速に処理できます。

1
2
# 大容量ファイルでも瞬時に処理
rev /var/log/largefile.log

実践的な使い方

ファイルの拡張子を逆順にして検出

1
ls /tmp | rev | cut -d'.' -f1 | rev | sort | uniq -c

拡張子パターンを新しい視点で分析。

秘密のメッセージエンコード

1
2
echo "secret message" | rev
# 出力: egassem terces

簡単な難読化(本当のセキュリティには使わないでください)。

テストデータの生成

1
2
3
4
5
cat << 'EOF' | rev
test1
test2
test3
EOF

テストケースを反転させたバージョンを生成。

ログファイルの文字列検索

1
rev /var/log/syslog | grep -i pattern | rev

反転後に検索して、結果を反転して確認。

まとめ

revコマンドのポイント:

  • 各行の文字を左右反転する
  • tacは行の順序を反転、revは文字を反転
  • 回文判定やテキスト加工に使える
  • オプションはほぼない(シンプル)
  • 大容量ファイルでも高速処理
  • 日本語を含むテキストにも対応
  • よく使う組み合わせ: rev file.txt, echo text | rev

使う頻度は少なめですが、テキスト加工やテスト、ちょっとしたパズルを解く時に活躍する隠れた便利コマンドですよ!