Database 使用shell脚本对文件中不同长度的所有列进行零填充
我必须使用以“|”分隔的加载文件将数据加载到informix数据库中 表的架构为: A列:字符(9) B列:字符(6) C列:字符(3) D列:char(8)。 我加载的文件包含的数据格式与需要插入数据库的格式不同 由于数据太大,我不想依赖excel。如果我剪切文件中的每一列,然后使用Database 使用shell脚本对文件中不同长度的所有列进行零填充,database,shell,sh,Database,Shell,Sh,我必须使用以“|”分隔的加载文件将数据加载到informix数据库中 表的架构为: A列:字符(9) B列:字符(6) C列:字符(3) D列:char(8)。 我加载的文件包含的数据格式与需要插入数据库的格式不同 由于数据太大,我不想依赖excel。如果我剪切文件中的每一列,然后使用printf(“%09d”col1,“%06d”col2)等等,则需要更长的时间 任何人都可以建议使用更好的shell命令。让我们将此作为要重新格式化的示例数据文件: $ cat data 1|2|3|4 5|6|
printf(“%09d”col1,“%06d”col2)
等等,则需要更长的时间
任何人都可以建议使用更好的shell命令。让我们将此作为要重新格式化的示例数据文件:
$ cat data
1|2|3|4
5|6|7|8
使用awk,我们可以创建分隔的9宽、6宽、3宽和8宽格式:
$ awk -F\| '{printf "%09d|%06d|%03d|%08d\n",$1,$2,$3,$4}' data
000000001|000002|003|00000004
000000005|000006|007|00000008
awk通常非常快速和高效
工作原理
Awk隐式处理所提供文件中的每一行,一次一行
这告诉awk使用-F\|
作为字段分隔符。我们必须转义|
,因为它是一个shell活动角色|
与其他语言中的printf“%09d |%06d |%03d |%08d\n”、$1、$2、$3、$4
类似,它以指定格式打印四列printf
$ cat data
1|2|3|4
5|6|7|8
使用awk,我们可以创建分隔的9宽、6宽、3宽和8宽格式:
$ awk -F\| '{printf "%09d|%06d|%03d|%08d\n",$1,$2,$3,$4}' data
000000001|000002|003|00000004
000000005|000006|007|00000008
awk通常非常快速和高效
工作原理
Awk隐式处理所提供文件中的每一行,一次一行
这告诉awk使用-F\|
作为字段分隔符。我们必须转义|
,因为它是一个shell活动角色|
与其他语言中的printf“%09d |%06d |%03d |%08d\n”、$1、$2、$3、$4
类似,它以指定格式打印四列printf