2015-09-26 33 views
0

假设我有一个文件(file.txt),其中包含几个带字符的数字。反转数据顺序

1 2 3 4 (23) 

23 2 1 (51) 

2 1 4 (11) 

而且,我想按照下面的相反顺序阅读它。

(23) 4 3 2 1 

(51) 1 2 23 

(11) 4 1 2 

我尝试:

awk '{print $NF,$0}' file.txt | sort -nr 

是否有一个命令行中的Linux或者微代码(在AWK或C++或其他语言)执行此任务?

+1

有一些* *可以做到这一点的命令,象例如['awk'](http://man7.org/linux/man-pages/man1/gawk.1.html)。或者你可以让你自己的程序在C++中做到这一点(为什么你会标记这个问题C++?)。如果您已经制作了自己的程序(使用AWK或C++或其他语言)并且遇到问题,那么您非常欢迎向我们展示您尝试的内容,并解释它出现了什么问题,我们将尽力帮助您您。然而,我们将不会为你编写你的程序。 –

+0

我一直在命令行尝试,但保持失败。以下是我尝试的命令: awk'{print $ NF,$ 0}'file.txt | sort -nr – MikeRi

+0

Nvm我终于明白了! 感谢您让我知道abt的awk功能! effin powerfullll工具! – MikeRi

回答

4
awk '{for (i=NF;i>0;i--){printf $i" "};printf "\n"}' file.txt 

输出:

 
(23) 4 3 2 1 

(51) 1 2 23 

(11) 4 1 2 
+1

切勿使用'printf $ i',因为当输入包含printf格式化字符(如'%s')时,它将以加密和/或灾难性方式失败。总是使用'printf'%s“,$ i'来代替。另外,'{printf $ i“”}; printf“\ n”'会在每行的末尾添加一个空尾字符,使用'printf'%s%s“,$ i,(i> 1?OFS:ORS )'而不是。 –

+2

谢谢你的有用提示。 – Cyrus