我必须使用加载文件“|”将数据加载到informix数据库中分隔。
表的架构是: A栏:char(9) B栏:char(6) C栏:char(3) D栏:char(8)。 我加载的文件的数据格式与插入数据库所需的格式不同。
由于数据太大,我不想依赖excel。如果我在文件中剪切每一列,然后使用printf("%09d" col1, "%06d" col2)
等等,则需要更长的时间。
任何人都可以建议使用更好的shell命令。
答案 0 :(得分:4)
让我们将其作为我们要重新格式化的示例数据文件:
$ 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隐式处理提供的文件中的每一行,一次一行。
-F\|
这告诉awk使用|
作为字段分隔符。我们必须逃避|
,因为它是一个shell活动角色。
printf "%09d|%06d|%03d|%08d\n",$1,$2,$3,$4
与其他语言中的printf
类似,这会打印出指定格式的四列。