强制输出字段的顺序我想要做这样的事情:从剪切命令
cat abcd.txt | cut -f 2,1
和我想要的顺序为2,然后在输出1。在我测试的机器上(FreeBSD 6),这没有发生(它的打印顺序是1,2)。你能告诉我如何做到这一点?
我知道我总是可以编写一个shell脚本来完成这个反转操作,但我正在寻找使用'cut'命令选项的东西。
我想我使用的coreutils包含剪切版本5.2.1。
强制输出字段的顺序我想要做这样的事情:从剪切命令
cat abcd.txt | cut -f 2,1
和我想要的顺序为2,然后在输出1。在我测试的机器上(FreeBSD 6),这没有发生(它的打印顺序是1,2)。你能告诉我如何做到这一点?
我知道我总是可以编写一个shell脚本来完成这个反转操作,但我正在寻找使用'cut'命令选项的东西。
我想我使用的coreutils包含剪切版本5.2.1。
这不能用cut来完成。根据手册页:
所选输入的写入顺序与读取的顺序相同,只写一次。
相反,你可以使用AWK,这样做:
awk '{print($2,"\t",$1)}' abcd.txt
与你使用的字段分隔符任何替换\吨。
拉尔斯的回答非常好,但我发现了一个更好的答案。与他的问题是它不匹配列。为了解决这个问题使用下列内容:
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
在Cygwin的我与替换-F “\ t” 的 - 不要做这个工作。 – 2013-07-18 11:39:57