我想在文件夹的所有csv中将第7个逗号和第7个逗号分隔为第四个逗号。
在此命令行中,我将第四个逗号加倍:
sed 's/,/,,/4' Person_7.csv > new.csv
在此命令行中,我可以找到并计算一行中的所有逗号:
sed 's/[^,]//g' dat | awk '{ print length }'
在此命令行中,我可以计算并创建一个包含7个逗号的行的新文件:
awk -F , 'NF == 7' <Person_test.csv >Person_7.csv
但是我不知道该怎么做...
答案 0 :(得分:1)
您需要选择仅包含7个逗号的行,然后仅对这些行进行操作。您可以使用sed来做到这一点:
sed '/^\([^,]*,\)\{7\}[^,]*$/s/,/&&/4'
其中^\([^,]*,\)\{7\}[^,]*$
定义了一行,该行恰好包含7个逗号。
但是,使用awk会容易一些
awk -F, -v OFS=, 'NF == 8 { $4 = $4 OFS } 1'
这会将输入和输出字段分隔符设置为,
,然后对于具有8个字段(7个逗号)的行,在第4个字段的末尾附加一个,
,使逗号加倍。最后的1
确保打印每一行。