10 我正在尝试在未知数量的字段的输入行中进行排序: 输入: ab bc bc ab cd ef bc bc cd ef cd bc ab ef ab bc cd gh 输出: ab bc ab bc bc cd ef bc cd ef ab cb cd ab bc cd ef gh 我一直在使用类似的东西,awk '{if($2 < $1) print $2,$1;else print}'但似乎在两个以上的领域上都会变得混乱。有什么帮助吗? text-processing awk sort — 克里斯 source
8 一种使用方式perl: perl -lane 'printf qq[%s\n], join q[ ], sort @F' infile 输出: ab bc ab bc bc cd ef bc cd ef ab bc cd ab bc cd ef gh — 比雷 source 2 由于您正在使用-l,因此无需打印换行符。print join " ", sort @F就足够了。 — glenn jackman 2012年
6 使用GNU awk的一种方法: awk '{ split($0, arr); asort(arr); for (i=1; i<=length(arr); i++) { printf "%s ", arr[i] }; printf RS } ' infile 输出: ab bc ab bc bc cd ef bc cd ef ab bc cd ab bc cd ef gh — 比雷 source
2 这是另一个perl解决方案,类似于@Birei的答案,但更简洁: $ perl -anle 'print "@{[sort @F]}"' file ab bc ab bc bc cd ef bc cd ef ab bc cd ab bc cd ef gh — cuonglm source
1 在shell脚本中: while read n do echo $(echo $n | tr " " "\n" | sort ) done < infile (分叉太多,更喜欢perl或gnu awk解决方案) — 伊曼纽尔 source
-l
,因此无需打印换行符。print join " ", sort @F
就足够了。