确保.csv文件在bash中的每一行具有相同的列数

Joe*_*eS. 0 linux csv bash awk

我在Linux服务器中有一个csv文件,它有多行,字段差异很大.我想确保所有记录都有最大列数(空值)作为具有最大列数的行.我需要在bash脚本中实现这一点.如果可能的话,我想尝试使用awk我只是bash的新手.

kar*_*kfa 5

awk救援.您可以使用TJ的示例输入文件在一个脚本中完成所有操作

$ awk -F, -v OFS=, 'NR==FNR{if(max<NF)max=NF;next}; 
                           {NF=max}1' file{,} 
1,2,3,4,5,
1,2,3,4,,
1,2,3,,,
1,2,3,4,5,6
Run Code Online (Sandbox Code Playgroud)

说明:这是一个双通算法,在第一轮中计算最大值并在第二轮中使用. NR==FNR仅对第一个文件为真,计算最大值,请注意,由于默认值为零且长度为非负,因此无需初始化最大值.next跳过脚本的其余部分.在第二轮设置中NF=max,用较少的字段填充记录.1用作基于awk默认值的打印(或任何真实语句)的简写.同样file{,}解决file file为使用相同的文件两次双通道算法.

使用数组和END块也可以使用单通道写入相同的内容.