awk '{for(i=1; i<=NF; i++) printf("%d ",$i)}' | sort -n
Run Code Online (Sandbox Code Playgroud)
它读取的文件就像
55 89 33 20
Run Code Online (Sandbox Code Playgroud)
并正常打印出来,而不是按数字排序.为什么?
sort在每行的基础上工作,printf默认情况下不附加换行符,您需要指定它.所以使用:
awk '{for(i=1; i<=NF; i++) printf("%d\n",$i)}' | sort -n
Run Code Online (Sandbox Code Playgroud)
这将在单独的行中打印出您的数字,如果您希望它们再次在一行中,那么您可以将它管道输出到paste:
awk '{for(i=1; i<=NF; i++) printf("%d\n",$i)}' | sort -n | paste -s -d ' '
Run Code Online (Sandbox Code Playgroud)
您也可以使用print而不是printf,默认情况下会附加换行符:
awk '{for(i=1; i<=NF; i++) print $i}' | sort -n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |