您可以使用awk 将文本转换为数字,例如使用此命令:
split("ABCDEFGHIJKLMNOPQRSTUVWXYZ",a,"")
所以你可以得到一些这样的:
awk -F":|," 'BEGIN {split("ABCDEFGHIJKLMNOPQRSTUVWXYZ",a,"");for (i=1;i<=27;i++) x[a[i]]=i} {print x[$1],$3,$5}' OFS=, file
1,2.33,3.18
13,8.72,7.25
25,9.55,3.43
3,5.78,4.32
它使用a[1]=A a[2]=B 等创建一个数组,然后将其转换为x[A]=1 x[B]=2 etc
按: 和, 拆分数据,然后将第一列从文本转换为值并打印其余部分。
使用google 将有助于解决此问题:How to print ASCII value of a character using basic awk only
处理多列:
awk -F":|," 'BEGIN {split("ABCDEFGHIJKLMNOPQRSTUVWXYZ",a,"");for (i=1;i<=27;i++) x[a[i]]=i} {printf "%s,",x[$1];for (i=3;i<NF;i+=2) printf "%s,",$i;print $NF}' OFS=, file