データベースにインポートする照合

データベースにインポートする照合

私のファイルには44の列があります。問題は,フィールドにあります。このデータを特定の列に分割してその横の列に入れたいと思います。

生の:

122|abc |ds,we       |||wrqg
145|dw  |ett,335     |||nxd
166|rotl|qqqp,eoepepe|||ge
776|gge |022         |||pp
039|pot |011a        |||lot

予想出力:

122|abc |ds  |we||wrqg
145|dw  |ett |335||nxd
166|rotl|qqqp|eoepepe||ge
776|gge |022 |||pp
039|pot |011a|||lot

この出力により、データがデータベース・テーブルの正しいフィールドにインポートされます。

このコードを試しましたが、データに新しい列が追加されます。

`awk -F '|' 'BEGIN { OFS=FS } { gsub(",", "|", $3); print }' file`

本当にあなたの助けが必要です!

ベストアンサー1

$ awk -F '|' 'BEGIN { OFS=FS } { split($3, a, ","); $3 = a[1]; $4 = a[2]; print }' file
122|abc |ds|we       ||wrqg
145|dw  |ett|335     ||nxd
166|rotl|qqqp|eoepepe||ge
776|gge |022         |||pp
039|pot |011a        |||lot

ここでは、3番目のフィールドをカンマで区切りました。これにより、分割されたビットがa別々の配列要素として配列に割り当てられます。次に、3番目のフィールドを最初の位置に設定し、4番目のフィールドを2番目の位置に設定しました(およびa[1]それぞれa[2])。

これは、3番目の元のフィールドにカンマのみが含まれているか、コンマがまったく含まれていないと想定しています。複数のカンマが含まれていると、2番目のカンマ以降のすべてのデータが失われます。

おすすめ記事