我正在学习AWK,并试图对内置字符串函数进行一些练习。awk命令拆分第n个字段
这里是我的锻炼:
我有一个包含如下
RecordType:83
1,2,3,a|x|y|z,4,5
而我需要的输出文件是如下:
RecordType:83
1,2,3,a,4,5
1,0,0,x,4,5
1,0,0,y,4,5
1,0,0,z,4,5
我写了一个awk命令用于上述输出。
awk -F',' '$1 ~ /RecordType:83/{print $0}
$1 == 1{
split($4,splt,"|")
for(i in splt)
{
if(i==1)
print $1,$2,$3,splt[i],$5,$6
else
print $1,0,0,splt[i],$5,$6
}
}' OFS=, file_name
上面的命令看起来很笨拙。有什么办法来最小化命令?
在此先感谢
AWK -F,“NR> 1 {分裂($ 4, “|”);对于(i的一个)$ 4 = A [1];打印; $ 2 = $ 3 = 0}} NR == 1'OFS =,文件 – kattashri 2013-04-09 05:52:59
我刚刚修改了上面的命令以适用于多行 – kattashri 2013-04-09 05:55:28
您最好使用传统的for循环,以保证顺序。 – 2013-04-09 07:44:43