次の形式の大きなファイル(3000列、15000行)が2つあります。
file1(タブ区切り):
1/0 0/0 0/0
0/0 1/1 0/0
1/1 0/1 0/0
file2(タブ区切り):
3 5 2
1 7 10
3 4 3
各ファイルの最初の列の値を「:」区切り文字に結合してから、2番目の列、3番目の列などに移動したいと思います。希望の出力(タブ区切り):
1/0:3 0/0:5 0/0:2
0/0:1 1/1:7 0/0:10
1/1:3 0/1:4 0/0:3
効率は重要ではないので、どの言語でも可能です。この質問が以前にリクエストされた場合はお詫び申し上げます。
答え1
このような?サンプルデータの使用:
paste file{1,2} | awk '{for (i=1;i<=NF/2; i++){printf "%s:%s\t",$i,$(NF/2+i)};printf "\n"}'
1/0:3 0/0:5 0/0:2
0/0:1 1/1:7 0/0:10
1/1:3 0/1:4 0/0:3
答え2
awk '{
getline f2 < "file2"
split(f2, a)
for (i=1; i<=NF; i++)
printf "%s:%s\t", $i, a[i]
print ""
}' file1
答え3
やや異なるアプローチ:
paste -d: <(xargs -n1 <file1) <(xargs -n1 <file2) | xargs -n 3