Chinaunix

标题: sort排序空格造成列识别不正确 [打印本页]

作者: zcsgamer    时间: 2014-05-30 14:34
标题: sort排序空格造成列识别不正确
假设如下数据
2 3 3
1 "2 1" 4

执行命令
sort -k 3n a
输出
1 "2 1" 4
2 3 3

想得到的结果
2  3      3
1 "2 1" 4


我知道这是空格的原因,想用复杂字符串替代空格,然后用-t参数处理,但-t后面只能接一个字符,这样在复杂的文本中,又很容易存在相同的字符,想用高位ASCII字符,似乎又不支持。

把“2 1”看作是一个整体,然后排序,sort能不能实现这样的功能,如果不能,有没有其他可实现的方案?
作者: q1208c    时间: 2014-05-30 14:54
一般我都是用 "|" 来做分隔的.
作者: seesea2517    时间: 2014-05-30 16:43
回复 1# zcsgamer


    这是个麻烦事,sort cut 都有遇到这麻烦事,只好用awk了。
作者: tgwz88    时间: 2014-05-30 21:56
  1. head -1 o | awk '
  2. BEGIN{FS=""}
  3. {NF++;print}
  4. '&&tail -1 o
复制代码
不知道这样合不合要求?
作者: yestreenstars    时间: 2014-05-31 00:12
awk for 4.0
  1. awk -vFPAT='"[^"]+"|[^ ]+' '{a[NR,b[$3]=$3]=$0}END{for(i=0;i++<asort(b);)for(j=0;j++<NR;)if(a[j,b[i]]!="")print a[j,b[i]]}'
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2