0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Macとかでテキストファイルの行の順序を逆にしたい

Last updated at Posted at 2023-03-18

はじめに

恒例のお断りですが、この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。

やりたいこと

おはよう
こんにちは
さようなら

なファイルがあったら

さようなら
こんにちは
おはよう

というファイルを作りたい、ってことです。

tail -r

実例

$ cat file.txt 
おはよう
こんにちは
さようなら
$ tail -r file.txt 
さようなら
こんにちは
おはよう

はい、できました1

おまけ

「テキストファイルの行の順序を逆にしたい」みたいな感じで検索すると"tac"というコマンドがあることが分かります2。が、tacはGNUのcoreutilsの中の一つなので、MacとかBSD系のOSではデフォルトでは入っていません34。こんなことは、たまたま思いついた時にさくっとやりたいわけで、いちいちインストール、というのはちょっと違うかなと思います。でも、この程度の機能であれば、絶対MacとかBSD系のOSにもあるはずで、それがtailの-rオプションです。
ちなみに、(行単位ではなく)単に「逆にしたい」で検索してしまうと"rev"というコマンドがあることがわかります。こちらはMacとかBSD系のOSにもデフォルトで入ってます。「なんだ、名前が違うけどあるよね」なんて思ってこちらを使うと、残念ながら期待とは違って行ごとに文字単位で逆にしてくれます。はい、証拠。

$ rev file.txt 
うよはお
はちにんこ
らなうよさ

これはこれで正しく動作しているとは思いますが、こういう需要ってどれだけあるのでしょう。(さらに言うと、Macではバイト単位で逆にしてくれたようで文字化けしてしまいました56。)

  1. まあ、この程度だったらエディター使って手でやれよ、というのはその通りで、これはあくまで例です。

  2. catの逆ってことみたいですね。

  3. インストールできないわけではないので、事前にインストールしておけばいいんですけどね。

  4. macOS Sonomaでも入っていませんでした。

  5. Macのバージョンが古かったためかもしれません。新しいので試せば違うかも。

  6. macOS Sonomaでは文字化けは起こらず、期待通りの動作でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?