一部のデータのフォーマットを調整する必要がありますが、それを簡単に変更する方法があるかどうかはわかりません。 2つのデータ要素の間に「/」を使用して、2つのデータ列を1つの列にマージする必要があります。
入力する
Known Mother
5 babies
3 Loci
Mom 314 322 249 261 342 346
2_1_2011 314 314 249 257 342 346
2_17_2011 314 314 257 261 346 346
2_26_2011 314 314 257 261 342 346
2_30_2011 314 314 257 261 342 342
2_5_2011 314 314 249 257 342 342
希望の出力
Known Mother
5 babies
3 Loci
Mom 314/322 249/261 342/346
2_1_2011 314/314 249/257 342/346
2_17_2011 314/314 257/261 346/346
2_26_2011 314/314 257/261 342/346
2_30_2011 314/314 257/261 342/342
2_5_2011 314/314 249/257 342/342
これらのファイルには、上記の例に示されているよりも多くのデータ(合計144ファイル)が含まれています。手動でExcelを編集せずに上記の修正を実行する方法に関する提案がある場合は、大変感謝します。
答え1
この質問には2つの部分があります。
- 説明するように変換する必要がある行を決定します(たとえば、「7列の行」など)。
- 変換の実行
Awkを使用してこれを行う1つの方法は次のとおりです。
awk 'NF == 7 { print $1, $2 "/" $3, $4 "/" $5, $6 "/" $7 }
NF != 7 { print }' input.txt
出力:
Known Mother
5 babies
3 Loci
Mom 314/322 249/261 342/346
2_1_2011 314/314 249/257 342/346
2_17_2011 314/314 257/261 346/346
2_26_2011 314/314 257/261 342/346
2_30_2011 314/314 257/261 342/342
2_5_2011 314/314 249/257 342/342
答え2
つかむAwk
解決策:
awk 'NR<4;
NR>3{
printf "%s\t",$1;
for (i=2; i<NF; i+=2) printf "%s/%s%s", $i, $(i+1), (NF-i==1? "":"\t");
print ""
}' file
出力:
Known Mother
5 babies
3 Loci
Mom 314/322 249/261 342/346
2_1_2011 314/314 249/257 342/346
2_17_2011 314/314 257/261 346/346
2_26_2011 314/314 257/261 342/346
2_30_2011 314/314 257/261 342/342
2_5_2011 314/314 249/257 342/342