我想用特定分隔符 (ascii 0xff) 对文件进行排序,并且记录以零结尾。但我无法使用以下命令:
$ sort -z -t \xff -o data data
错误信息是:
在 FreeBSD 上:
sort: xff: Invalid argument
在 Linux 上:
sort: multi-character tab ‘xff’
有没有办法以可移植的方式做到这一点?(跨 gnu coreutils 排序和 bsd 排序以及跨不同的 shell)。
答案1
嗯,这$'\xff'
实际上是Bash 功能并且应该与操作系统无关。这在 FreeBSD 9.1 上有效(尝试过 bash、ksh、zsh):
$ head -3 foo 26436�22977 4478�3214 28822�4147 $ head -3 foo | 排序-n -t $'\xff' -k2 4478�3214 28822�4147 26436�22977
好的,如果这不起作用,也许它可以与 (BSD-)awk 一起使用:
$ head -3 a | awk -F $'\xff' '{打印 $1" "$2}' | sort -nk2 | awk '{打印 $1"\xff"$2}' 4478�3214 28822�4147 26436�22977
是的,它很丑 :-\