- 论坛徽章:
- 0
|
$head dat.txt
ALGERIA 36.4 14.6
CONGO 37.3 8.0
EGYPT 42.1 15.3
GHANA 55.8 25.6
IVORY COAST 56.1 33.1
MALAGASY 41.8 15.8
MOROCCO 46.1 18.7
TUNISIA 41.7 10.1
CAMBODIA 41.4 19.7
CEYLON 35.8 8.5
像上面的数据中,实质上只有三列,每行的域分隔符为不等的空格,但有一点是第一个域可能为多个空格隔开的名词,比如:
IVORY COAST 56.1 33.1
现在要做到将三列以‘\t’制表符隔开,而不再是不等的空格隔开。现在我只能对后面数字列做到这样,请问各位如何整个做到这一点。
$ cat dat.txt|tr -s ' ' |awk 'BEGIN{OFS="\t"}{print $(NF-2), $(NF-1), $NF}'|head
ALGERIA 36.4 14.6
CONGO 37.3 8.0
EGYPT 42.1 15.3
GHANA 55.8 25.6
COAST 56.1 33.1 ## 实际应为: IVORY COAST 56.1 33.1
MALAGASY 41.8 15.8
MOROCCO 46.1 18.7
TUNISIA 41.7 10.1
CAMBODIA 41.4 19.7
CEYLON 35.8 8.5
|
|