異なるデータセットを含む2つの異なるtextfiles.txt(textfile1.txtとtextfile2.txt)があります。 2つの別々の.txtファイルを単一のCSVファイルにコンパイルできますか?
修正する
textfile1.txt には、次の形式で作成された値があります。
20
31
18
-11
12
19
textfile2.txt には、次の形式で作成された値があります。
100.000 200.000 300.000
101.000 201.000 301.000
102.000 202.000 302.000
103.000 203.000 303.000
104.000 204.000 304.000
105.000 205.000 305.000
私の出力を次の形式にしたいと思います。
20,100.000,200.000,300.000
31,101.000,201.000,-301.000
18,-102.000,202.000,302.000
-11,103.000,203.000,303.000
12,104.000,204.000,304.000
19,105.000,-205.000,305.000
答え1
paste
ファイルを並べてリンクします。
paste -d, file1 file2
ファイルにカンマや引用符を含めることができますが、CSVデータ自体ではない場合は、最初にすべて引用符を付ける必要があります。
paste -d, \
$<( sed 's/"/""/g;s/^/"/;s/$/"' < file1 ) \
$<( sed 's/"/""/g;s/^/"/;s/$/"' < file1 )
または特殊文字のみを含む行
paste -d, \
$<( sed '/[",]/ { s/"/""/g;s/^/"/;s/$/"; }' < file1 ) \
$<( sed '/[",]/ { s/"/""/g;s/^/"/;s/$/"; }' < file2 )
答え2
2つのファイルをマージしたい場合は、cat textfile1.txt textfile2.txt > combined.txt
そうすることができます。
答え3
2番目のファイルがタブを区切り文字として使用すると仮定すると、次のようにして最初のファイルを最初の列として2番目のファイルに追加できます。
paste textfile1.txt textfile2.txt
結果はTSVデータセットになります(データに改行を含むフィールドが含まれていないと仮定)。
20 100.000 200.000 300.000
31 101.000 201.000 301.000
18 102.000 202.000 302.000
-11 103.000 203.000 303.000
12 104.000 204.000 304.000
19 105.000 205.000 305.000
これをCSVに変換するには、タブをコンマに変更するtr '\t' ','
か、より複雑なデータ(組み込みタブ)がある場合は、Miller(mlr
)などのCSV認識ツールを使用します。
paste textfile1.txt textfile2.txt |
mlr --itsv --ocsv cat
オプション--itsv
(入力はTSV)と--ocsv
(出力はCSV)の組み合わせを単一のオプションに組み合わせることができます--t2c
。