我有一个我要反转的数字列表.
它们已经排序了.
35 53 102 342
我要这个:
342 102 53 35
所以我想到了这个:
echo $NUMBERS | ??? | tac | xargs
什么是???
它应该将空格分隔列表转换为行分隔列表.
我想避免设置IFS.
也许我可以使用bash数组,但是我希望有一个命令,其生命的目的是与xargs相反(也许xargs不仅仅是一个小技巧!)
Mat*_*Mat 18
你可以用printf它.例如:
$ printf "%s\n" 35 53 102 342
35
53
102
342
$ printf "%s\n" 35 53 102 342|tac
342
102
53
35
Run Code Online (Sandbox Code Playgroud)
没有tac的awk单行:
awk '{NF++;while(NF-->1)print $NF}'
Run Code Online (Sandbox Code Playgroud)
例如:
kent$ echo "35 53 102 342"|awk '{NF++;while(NF-->1)print $NF}'
342
102
53
35
Run Code Online (Sandbox Code Playgroud)
另一个答案(容易记住但不如printf方法快):
$ xargs -n 1 echo
Run Code Online (Sandbox Code Playgroud)
例如
$ NUMBERS="35 53 102 342"
$ echo $NUMBERS | xargs -n 1 echo | tac | xargs
342 102 53 35
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用Bash字符串操作
$ numbers="35 53 102 342"
$ echo "${numbers// /$'\n'}"
35
53
102
342
$ echo "${numbers// /$'\n'}" | tac
342
102
53
35
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4273 次 |
| 最近记录: |