私のファイルには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番目のカンマ以降のすべてのデータが失われます。