次の2つのコマンドがあるとしましょう。
$ cat file1
file1_a
file1_b
file1_c
file1_d
そして:
$ cat file2
file2_a
file2_b
file2_c
file2_d
カスタム区切り記号(例:)を使用して...
これらの出力を結合して次の出力を取得するにはどうすればよいですか?
$ # some fancy command like { cat file1 & cat file2 } | combine --separator='...'
file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d
?
答え1
私はpaste
コマンドを使用するのが好きです。
paste -d. file1 - - file2 < /dev/null
希望の出力を生成
file1_a...file2_a
file1_b...file2_b
file1_c...file2_c
file1_d...file2_d
-
</dev/null
標準入力を参照すると、ポイント間に何も望まないので、使用するポイントを3倍にするために2回使用します。
答え2
2つのファイルがある場合はpaste
タブで区切られます。したがって、タブ文字を目的の区切り文字に置き換えます。
$ paste file1 file2 | sed -e 's/\t/.../'
コンテンツにタブがある場合は、%:のように表示されない新しい区切り文字を作成します。
$ paste -d% file1 file2 | sed -e s/%/.../
答え3
これは@zacharybradyの答えですが、あなたが要求したものと似ています。入力プロセスに関する限り。延長すればいいと思います。
paste -d. <(cat file1) - - <(cat file2) < /dev/null
続行してくれた@zacharybradyに感謝します。私はjoin <(cat -n file1) <(cat -n file2) | cut -d" " -f2-
これを忘れましたpaste
。ただし、正しいフィールド区切り文字を取得できません。
注:paste
utf-8と互換性がないことがわかりました。それ以降の最初のバイトのみ処理するので-d
破棄され-d…
ます。 (私はDebian jessieを使用しています。貼り付け(GNU coreutils)8.23)