这样做的最佳方式是什么?如何?
我会收集名为sed
,AWK
和bash
的内容。
我曾经使用AWK
一次用于一个命令,其他命令从不。
我搜索过,其他明显相似的问题没有我需要的答案。
我在CSV文件中有一个名为fields
的列:
_________________________
field1 | field2 | field3|
-------------------------
1990AB | 123456 | 123456|
-------------------------
我想根据这三个原始fields
添加fields
,如下所示:
_______________________________________________________
field1 | field2 | field3 | field1a | field2a | field3a |
-------------------------------------------------------
1990AB | 123456 | 123456| 1990 | 12345 | 12345 |
-------------------------------------------------------
其中:
field1a
1990第1列前4位总是数字,然后是alpha field2a
12345第2列始终为6位field3a
12345第3列始终为6位这些是在数据库导入之前的一次性文件操作。
macosx
有大约600万条记录。第二次尝试这个问题,因为我的第一次尝试显然不太好。在这方面,我是100%的新手。
答案 0 :(得分:1)
awk
救援!
即使您之前没有使用awk
$ awk -F, -v OFS=, 'NR==1 {for(i=1;i<=3;i++) $(++NF)=$i"a"}
NR>1 {$(++NF)=substr($1,1,4);
$(++NF)=substr($2,1,5);
$(++NF)=substr($3,1,5)}1' file
NR
是行号,标题的特殊处理,NF
是字段数,此处每增加一列递增,$i
是位置i
的字段值。最后一个1
是打印行的简写。初始选项用于将输入字段分隔符(F)和输出字段分隔符(OFS)设置为逗号。