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


9

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

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

質問使用時に(複数の)区切り文字をどのように定義し pasteますか?

単に、例えば、abc-123を区切り文字として使用するのが良いでしょう。「複数」とは、たとえば1つではなく2つのTABSを意味します。


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

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

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

また:

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

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

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

回答:


17

持っているためにabcその間のファイルfile1とfile2を、あなたが行うことができます。

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

または:

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

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

paste file1 /dev/null file2

テキスト処理で2つの列を作成するために使用/dev/nullする」は機能します(それ以外に、これまで見逃していたこの一般的な知識であり、そうでない場合:どこからこの情報を入手しましたか?)
erch

1
@ Chirp.NotLuke。/dev/nullだからしている貼り付け、読んで、空のファイルのような役割を果たしfile1順番に、空のファイル、および空のファイル、区切りがあることとFILE2、、 abc。動作の詳細-dpastemanページにあります。
ステファンChazelas

@StéphaneChazelas pr -mts'abc' file1 file2を代替として追加することもできますか?
Sundeep 2017年

4

これは、結合する2つのファイルのみを指定しているためです。区切り文字列の各文字は、各入力ファイルの行の各結合の間に使用されます。

例えば

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...

2

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

lam file1 -s delimiter file2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.