[bash]複数行を横に連結する方法(pasteコマンド)

bash

複数ファイルを横に連結させる方法。

使用方法/使用例

[使用方法]
連結したいテキストの順に並べるだけ。

# paste <file1> <file2>

[使用例]
テキスト1(text1.txt)とテキスト2(text2.txt)を行毎に結合します。デフォルトでの区切りはTAB区切り。
サンプルとして以下の2ファイルがあったとします。

#cat text1.txt
りんご
ごりら
らっぱ
ぱんだ

#cat text2.txt
apple
gollira
rappa
Panda

これを結合すると、下のような結果になる。

# paste text1.txt text2.txt
りんご<tab>apple
ごりら<tab>gollira
らっぱ<tab>rappa
ぱんだ<tab>panda

オプション

「-d」オプションで区切り文字を指定できる。

# paste -d, text1.txt text2.txt
りんご,apple
ごりら,gollira
らっぱ,rappa
ぱんだ,panda

「-s」でファイル単位で連携する、とか言われてもわからんので実行した結果↓みたくなった。
text1.txtが1行目に横並び、text2.txtが2行目に横並びで出力された。

# paste -s text1.txt text2.txt
りんご<tab>ごりら<tab>らっぱ<tab>ぱんだ
apple<tab>gollira<tab>rappa<tab>panda

検証

空行がある場合はどうなるの?
結論は該当箇所は値無しのカラムとして判断されるっぽい。
例)text1.txtとtext2.txtを以下のように変更。

#cat text1.txt
りんご

らっぱ
ぱんだ

#cat text2.txt
apple
gollira
rappa

# paste text1.txt text2.txt
りんご<tab>apple
<tab>gollira
らっぱ<tab>rappa
ぱんだ<tab>

コメント

タイトルとURLをコピーしました