可能的重复:
在单个命令中组合 2 个不同的剪切输出?
我有一个文件 - temp.txt - 其中包含
ABCDF
PQRST
LMNOP
我尝试了这个cut
命令
$ cut -c 2-5 temp.txt
BCDF
QRST
MNOP
输出是正确的。
$ cut -c 1,2,3,4 temp.txt
ABCD
PQRS
LMNO
输出是正确的。
但是当我改变顺序时,意思是
$ cut -c 2-4,1 temp.txt
ABCD
PQRS
LMNO
显示以上输出。
但逻辑上输出是
BCDA
QRSP
MNOL
所以我的问题是这是如何发生的,背后有什么原因。
答案1
解释在 中man cut
,尽管很容易将其视为您的首选期望。然而它确实说:
Selected input is written in the same order that it is read
输入的含义可能不明确,但通常选项就是选项,而正在处理的文件肯定是输入。
的list
,例如。-c 2,3,4,1
非常类似于正则表达式列表:[2341]
;它意味着列表中的任何数字,即使它们加倍......例如-c 2,2,2,2,2,2
与 .. 相同,-c 2
对于正则表达式,[2222222]
与 ... 相同[2]
,因此选项的顺序不相关。
答案2
解决办法是:
sed 's:^\(.\)\(.*\):\2\1:' file.txt
(昨天有人发表了类似问题的答案)
Cut 似乎不对输出进行排序,仅选择列/字段的范围并按照与原来相同的顺序输出。