我正在尝试解决csv文件中缺少数据的问题。该列应该为空,缺少用于维护csv结构的双字段分隔符。以下示例说明了我的意思:
1@Sunshine@2/M@L@JRVel@215@WAW
2@Pass@2/J@L1@JAvar@218@JKDes
3@Solo@2/K@JRosa@218@WAW
4@Bomber@2/D@L1@JLOrt@218@GCCon
5@SmokingCandy@2/Y@L1@MFco@218@SMAs
6@BigBound@2/H@L1@JCast@218@SMAs
7@ShootBunies@2/H@L@DLPar@218@DKo
如您所见,在第三行第四列中没有“ L”或“ L1”,而是“ JRosa”。这会导致mysql数据库格式错误。我想做的是使用AWK if语句在“ JRosa”前面附加另一个定界符。到目前为止,我只有一半的代码,也不知道该去哪里。我以为这会是这样的:
awk -F@ '{if(length($4) > 4) print "@"$4}'
仅打印输出:
@JRosa
我希望找到一个导致以下问题的解决方案:
1@Sunshine@2/M@L@JRVel@215@WAW
2@Pass@2/J@L1@JAvar@218@JKDes
3@Solo@2/K@@JRosa@218@WAW
4@Bomber@2/D@L1@JLOrt@218@GCCon
5@SmokingCandy@2/Y@L1@MFco@218@SMAs
6@BigBound@2/H@L1@JCast@218@SMAs
7@ShootBunies@2/H@L@DLPar@218@DKo
在if语句之后可以用来附加输入数据的人是否知道正确的格式?
如果行中少于7个字段,只需在第三个字段的末尾添加一个额外的“ @”即可:
$ awk 'BEGIN{FS=OFS="@"} NF<7{$3=$3FS} 1' file
1@Sunshine@2/M@L@JRVel@215@WAW
2@Pass@2/J@L1@JAvar@218@JKDes
3@Solo@2/K@@JRosa@218@WAW
4@Bomber@2/D@L1@JLOrt@218@GCCon
5@SmokingCandy@2/Y@L1@MFco@218@SMAs
6@BigBound@2/H@L1@JCast@218@SMAs
7@ShootBunies@2/H@L@DLPar@218@DKo
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句