如果我跑:
$ ls -l /tmp
total 16
drwxr-xr-x 2 noaccess noaccess 177 Nov 18 09:53 hsperfdata_noaccess
drwxr-xr-x 2 root root 117 Nov 18 09:53 hsperfdata_root
我得到了预期的结果:
]$ ls -l /tmp | tr -s '[:space:]'
total 16
drwxr-xr-x 2 noaccess noaccess 177 Nov 18 09:53 hsperfdata_noaccess
drwxr-xr-x 2 root root 117 Nov 18 09:53 hsperfdata_root
但tr
不会影响file
输出:
$ file /tmp/dummy
/tmp/dummy: empty file
$ file /tmp/dummy | tr -s '[:space:]'
/tmp/dummy: empty file
(如果我使用[:blank:]
,则相同)
我在期待:
$ file /tmp/dummy | tr -s '[:space:]'
/tmp/dummy: empty file
我是否误用file
? tr
?我必须awk
吗?我在SunOS 5.10上使用了bash 3.2.51,并希望区分XML和gz文件。
答案 0 :(得分:1)
Solaris {3.1}版本file
正在生成使用制表符而不是空格的输出:
$ touch /tmp/dummy
$ file /tmp/dummy | cat -vet
/tmp/dummy:^Iempty file$
$
在这种情况下,tr -s
会将单个制表符压缩为单个制表符...