AWK if length语句追加

托马斯·潘恩

我正在尝试解决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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章