7つの代わりに6つのフィールドを持つレコードを含むファイルに追加フィールドを追加する

7つの代わりに6つのフィールドを持つレコードを含むファイルに追加フィールドを追加する

カンマ区切りのテキストファイルに問題があります。混合レイアウト(数百)のファイルの受信を開始しようとすると、一部のレコードには7つのフィールド(合計6つのカンマ)があり、同じファイル内の他のレコードには6つのフィールド(5つのカンマ)があります。銃)。

5つのカンマを含むレコードを見つけたら、レコードの最後にカンマを追加してNAを追加して、ロードプロセスで最後のNAである7つのフィールドがあると思うようにしたいと思います。

これが私が今持っているものです。最初のレコードには7つのフィールドがあり、2番目のレコードには6つしかありません。

200000003183000100,Data,NA,0,IN,0,0.00
200000004625000000,Data,NA,0,IN,0

これが私が期待したものです(両方のレコードに7つのフィールドがあります)。

200000003183000100,Data,NA,0,IN,0,0.00
200000004625000000,Data,NA,0,IN,0,NA

sed やこれに似たものでカンマを数え、カンマが 5 つだけあるたびにファイルの末尾に、NA を追加すればよい。これは何百ものファイルで発生するため、ファイル名をパラメータとして使用するのか、それと同様のものを使用するのかは不明です。

ベストアンサー1

もし許可される:

awk -F, 'NF==6{$0=$0",NA"}1' file

おすすめ記事