web-dev-qa-db-ja.com

貼り付けコマンド:(複数の)区切り文字の設定

Linuxでは、(GNU coreutils)8.13のpasteに次の問題があります。

デフォルト(TAB)以外の区切り文字を設定しようとすると、定義された区切り文字の最初の文字が出力されるか、完全に無視されます。

質問使用時にpaste

単に使用する、例えばabc-123区切り文字がいいので。 「複数」とは、たとえば1つではなく2つのタブ。


これまでに試した区切り文字を囲むパターンは

  • --delimiters="\delimiter"
  • --delimiters='\delimiter'
  • --delimiters=$"\delimiter"
  • --delimiters=$'\delimiter'

すべて同じ結果:最初の文字のみが受け入れられるか、完全に無視されます。ショートバージョンも試してみました-d"\"および複数のインスタンス&ndahs;何も。

また:

  • --delimiters="\\"→エラーメッセージ

私が望むものではありませんが、完璧に機能するもの:

  • --delimiters="\n"→改行
  • --delimiters="\0"→間に何もない
  • --delimiters="\t"→ TAB、 デフォルト。すごい。
9
erch

File1とfile2の間にabcを含めるには、次のようにします。

paste -d abc file1 /dev/null /dev/null file2

または:

paste -d abc file1 - - file2 < /dev/null

2つのタブが必要な場合:

paste file1 /dev/null file2
16

これは、結合するファイルが2つだけであるためです。区切り文字列の各文字は、各入力ファイルの行の各結合の間に使用されます。

例えば

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...
4
X Tian

BSDシステム(私の知る限りLinuxではありません)には、上記のソリューションより高速で短いlam(「ラミネート」のような)ユーティリティがあります。

lam file1 -s delimiter file2
2
emm