我想要做这样的事情:
cat abcd.txt | cut -f 2,1
和我想要的顺序为2,然后在输出1。 在机器我测试(FreeBSD的6),这是不会发生(它在1,2顺序打印)。 你能告诉我如何做到这一点?
我知道我可以写一个shell脚本来完成这个逆转,但是我正在寻找使用“剪切”命令选项的东西。
我想我使用含切的coreutils 5.2.1版本。
我想要做这样的事情:
cat abcd.txt | cut -f 2,1
和我想要的顺序为2,然后在输出1。 在机器我测试(FreeBSD的6),这是不会发生(它在1,2顺序打印)。 你能告诉我如何做到这一点?
我知道我可以写一个shell脚本来完成这个逆转,但是我正在寻找使用“剪切”命令选项的东西。
我想我使用含切的coreutils 5.2.1版本。
这不能用做cut
。 根据手册页:
选择的输入是写在相同的顺序,它被读取,写入一次。
修补cut
已经提出了 很多 次 ,但即使是完整的补丁都被拒绝 。
相反,你可以用它做awk
,就像这样:
awk '{print($2,"\t",$1)}' abcd.txt
替换\t
与你使用的字段分隔符什么的。
拉斯答案是伟大的,但我发现了一个更好的一个。 他的问题是它匹配\ t \ t为没有列。 为了解决这个问题使用下列内容:
awk -v OFS=" " -F"\t" '{print $2, $1}' abcd.txt
哪里:
-F"\t"
是什么削减恰好 (标签)。
-v OFS=" "
是做什么用(两个空格)独立
例:
echo 'A\tB\t\tD' | awk -v OFS=" " -F"\t" '{print $2, $4, $1, $3}'
这种输出:
B D A