答えて
ここでは一般的なケースです:
データ見てすべてのヘッダを追跡します:
$ cat file1.csv
header1, header2, header3, header4, header5
a, b, c, d, e
$ cat file2.csv
header1, header3, header4, header5
j, w, c, a
$ cat file3.csv
header1, header2, header3, header5, header6
1, 2, 3, 4, 5
file1がheader6
FILE2がHEADER2とheader6
FILE3が欠落している欠落して不足していますヘッダー4
コード:
awk -F ", " -v OFS="," '
FNR == 1 {
delete this_file_headers
for (i=1; i<=NF; i++) {
this_file_headers[i] = $i
if (!($i in all_headers)) {
all_headers[$i]
all_headers_ordered[++nhead] = $i
}
}
next
}
{
lineno++
for (i=1; i<=NF; i++)
data[lineno,this_file_headers[i]] = $i
}
END {
sep = ""
for (i=1; i<=nhead; i++) {
printf "%s%s", sep, all_headers_ordered[i]
sep=FS
}
print ""
for (i=1; i<=lineno; i++) {
sep = ""
for (j=1; j<=nhead; j++) {
printf "%s%s", sep, data[i,all_headers_ordered[j]]
sep=FS
}
print ""
}
}
' file{1,2,3}.csv
出力
header1, header2, header3, header4, header5, header6
a, b, c, d, e,
j, , w, c, a,
1, 2, 3, , 4, 5
HEADER1、HEADER2、header3、header4、header5 、B、C、D、E HEADER1、HEADER2、header4 、B、 header6 X C君は、この例でのみ動作し、やりました とouput 'header1、header2、header3、header4、header5、header6 a、b、c、d、e、、、、 a、b、c、、、、 、、、、、x ' 正確ではなく、余分を与えて、 – Johnny
はgawk/nawk/mawkでfedoraでこれを再現できません。あなたのプラフォームとawkバージョンは何ですか? –
私はそれを再現することができますが、大きなファイルの場合、いくつかのヘッダーのマッチングは正しいですが、他のものはありません...あなたは何か手がかりを持っていますか? – Johnny
。
paste -d'\n' file1.csv <(awk -F',' 'NR>1{print $1", ,"$2","$3","$4}' file2.csv)
とawk;
awk 'NR==1{print $0}; NR==FNR{a[FNR]=$0;next} ; FNR > 1 {print a[FNR]"\n" $1" , "$2" "$3" "$4}' file1.csv file2.csv
例:
[email protected]:/tmp/test$ awk 'NR==1{print $0}; NR==FNR{a[FNR]=$0;next} ; FNR > 1 {print a[FNR]"\n" $1" , "$2" "$3" "$4}' file1.csv file2.csv
header1, header2, header3, header4, header5
a, b, c, d, e
j, , w, c, a
が動作しません:/ awk 'NR == 1 {print $ 0}; NR == FNR {a [FNR] = $ 0;次へ} FNR> 1「file1.csv file2.csv 'HEADER1、HEADER2、header3、header4、header5 {、 "$ 2" "$ 3"「$ 4 [FNR] "の\ n" $ 1" を印刷します} b、c、d、e j、w、c、a、 ' – Johnny
@Johnny:私はansを更新しました。ペーストコマンドで試してみてください。 –
この例では、ヘッダ2をスキップしてもスキップされた場合のみ、この例で動作します。 – Johnny
- 1. 異なるパラメータの異なるヘッダ
- 2. StackNavigatorの異なるヘッダ
- 3. 異なるバージョンのUNIXソートハンドルの違いが異なります
- 4. 異なるビューの異なるヘッダ(Bladeテンプレート、Laravel)
- 5. Java削除ファイルunix way(リンク解除ヘッダ)
- 6. 同じWPサイトの2つのドメインですが、異なるヘッダ
- 7. PHP get_headers()がCURLと異なるヘッダを報告します
- 8. 2台のコンピュータでUNIXのタイムスタンプが異なる
- 9. UNIXとsqldeveloperのスクリプト作成テーブルが異なる
- 10. Unixでもっとも異常なエラー
- 11. Unixの異なるファイルに動的なパターンを塗る
- 12. マクロ異なるヘッダのファイルをマージする
- 13. Javaの異なるユーザーとしてUNIXコマンドを実行する
- 14. 異なるサーバ上のファイルを比較するDiffコマンド - Unix
- 15. UNIXのタイムスタンプを検索すると異なる結果が表示される
- 16. inline Constexpr異なるヘッダ内のconst char *関数
- 17. 2つのクラスの異なるヘッダ、gcc、visual studio 2012
- 18. 静的および複数の機能の異なるヘッダ内
- 19. Perl - UNIXでのソートWindowsとは異なる
- 20. 一度に2つの異なる変数のルーピング、Linux、unix
- 21. UNIXとLinuxサーバーで異なる日付形式
- 22. NginxのカスタムPHP error_pagesとヘッダのステータスコードと本文の内容が異なる
- 23. 同じASP.NET Webアプリケーションが、WindowsとMac-OSで異なるパフォーマンス、UNIXまたはLinux
- 24. 同じtableModelクラスを継承する2つのテーブルの異なるヘッダ
- 25. ヘッダの場所が異なるURLを送信する問題があります
- 26. 異なるハードウェアアーキテクチャでメモリリークが異なる
- 27. 異なるスタイルの異なるクラスが
- 28. 異なるブラウザでレンダリングが異なる
- 29. 異なるUITableViewCellのSegueが異なる?
- 30. 異なるユーザーのセッションタイムアウトが異なる
あなたはこれを解決しようとするいかなる試みを行いましたか? – Inian
はい、等しくて枯渇した列では解決されましたが、列数が等しくない場合には解決できませんでした – Johnny
質問の内容を更新してください。 – Inian