ブログ

複数のファイルの行を連結する方法

at_shiita.ishigaki
2022年2月2日 8時51分

複数のファイルの行を連結するにはpasteコマンドを使用します。

[armadillo ~]# cat > num.txt << '__EOF__'
1
2
3
__EOF__
[armadillo ~]# cat > hoge.txt << '__EOF__'
hoge
fuga
piyo
__EOF__
[armadillo ~]# cat > foo.txt << '__EOF__'
foo
bar
baz
__EOF__
[armadillo ~]# paste num.txt hoge.txt fuga.txt
1       hoge    foo
2       fuga    bar
3       piyo    baz

行と列を入れ替える場合は-sオプションを使用します。

[armadillo ~]# paste -s num.txt hoge.txt foo.txt   
1       2       3
hoge    fuga    piyo
foo     bar     baz

区切り文字をタブから変える場合は-dオプションを使用します。
区切り文字を,(カンマ)にすることでcsvファイルを作るときにも使用することができます。 また、区切り文字は各列毎に変更することができます。
※ここでは例として、区切り文字を,(カンマ)とした場合と、一つ目の区切り文字を,(カンマ)とし、二つ目の区切り文字を+とした場合について記載します。

[armadillo ~]# paste -d , num.txt hoge.txt foo.txt
1,hoge,foo
2,fuga,bar
3,piyo,baz
[armadillo ~]# paste -d ,+ num.txt hoge.txt foo.txt
1,hoge+foo
2,fuga+bar
3,piyo+baz