0

在 unix 中读取一个 csv 文件,并对某些列进行一些替换。比如第 2 列(字符串类型)应该替换为(第 2 列本身的值 + 第 1 列的值(整数)),然后第 5 列替换为 $5+$4 等等。下面是示例 I/O。第一行是 Description 必须保持原样。

样本输入

EmpID|Empname|Empadd|roleId|roleDesc|Dept 
100|mst|Del|20|SD|DA 
101|ms|Del|21|XS|DA

样本输出

EmpID|Empname|Empadd|roleId|roleDesc|Dept 
100|mst100|Del|20|SD20|DA
101|ms101|Del|21|XS21|DA

empname 已与 empid 和角色 desc 与 roleID 连接。

4

2 回答 2

1

You got it almost right, this works:

$ awk 'BEGIN{FS=OFS="|"} (NR>1) {$2=$2 "" $1; $5=$5 "" $4} {print}' <<EOF                                           
EmpID|Empname|Empadd|roleId|roleDesc|Dept
100|mst|Del|20|SD|DA
101|ms|Del|21|XS|DA
EOF
=>
  EmpID|Empname|Empadd|roleId|roleDesc|Dept 
  100|mst100|Del|20|SD20|DA 
  101|ms101|Del|21|XS21|DA
于 2013-09-19T05:32:16.683 回答
0
> awk -F"|" -v OFS="|" 'NR!=1{$2=$1$2&&$5=$5$4}1' temp
EmpID|Empname|Empadd|roleId|roleDesc|Dept
100|1|Del|20|SD20|DA
101|1|Del|21|XS21|DA
>
于 2013-09-19T08:11:50.537 回答