Linux便利コマンド : paste

うめだ
2022-11-24
2023-06-09
目次

はじめに

みなさま、pasteコマンドをご存じでしょうか?

複数のファイルをひとつのファイルにマージしたいとき、まず思い浮かぶのは、
catコマンドで、リダイレクトして、任意のファイルに追記する方法だと思います。

この場合、行単位でのマージになりますが、列単位でマージしたいと思ったことはありませんでしょうか?

はい。そんな時は、pasteコマンドが実現してくれます!

環境

OS : AlmaLinux 8
pasteバージョン : 8.30

使い方

使い方はいたって簡単です。

まずは、サンプルファイルとして、下記for文でapacheのアクセスログから、9時と10時のログに対して10分単位の行数をファイルに出力します。

for H in 09 10
do
 for M in {0..5}
 do
 grep "31/Oct/2022:$H:$M" /var/www/vhosts/hoge.jp/logs/access_ssl_log | wc -l
 done | tee $H.txt
done

作成されたファイルの中身を確認してみます。


$ cat 09.txt
296
135
93
34
101
98
$ cat 10.txt
144
170
204
47
119
809
$

pasteコマンドで、2つのファイルを引数として指定すると、マージされて表示されます。

$ paste 09.txt 10.txt
296 144
135 170
93 204
34 47
101 119
98 809
$

まとめ

いかがでしたか?

利用頻度は高くないかと思いますが、いざというとき、
こちらの記事が参考になれば幸いです。