Cal*_* Xu 14 text-processing sort
给定输入:
hello: world foo bar baz
bar:
baz: bin boop bop fiz bang beep
bap: bim bam bop
boatkeeper: poughkeepsie
Run Code Online (Sandbox Code Playgroud)
我想将其分为顶部的大多数单词,至少在最后,如下所示:
baz: bin boop bop fiz bang beep
hello: world foo bar baz
bap: bim bam bop
boatkeeper: poughkeepsie
bar:
Run Code Online (Sandbox Code Playgroud)
我将如何使用sort
或其他工具执行此操作?
小智 22
你可以这样做:
awk '{print NF,$0}' file | sort -nr | cut -d' ' -f 2-
Run Code Online (Sandbox Code Playgroud)
我们使用awk
前缀为每行的字段数。然后我们sort
按那个数字并用 删除它cut
。
在最近的 GNU 中,awk
可以使用PROCINFO
array 来定义许多内部参数,包括打印数组元素的顺序(由 element 控制"sorted_in"
)。因此,我们可以用 的值构建和索引数组NF" "NR
,哪些元素的值为 ,$0
并将其打印在所需的输出中,在您的情况下为"@ind_num_desc"
:
awk '{a[NF" "NR]=$0}END{PROCINFO["sorted_in"]="@ind_num_desc"; for(i in a) print a[i]}' file
Run Code Online (Sandbox Code Playgroud)
Perl 单行:
print sort { split(' ',$a) <=> split(' ',$b) } <>;
Run Code Online (Sandbox Code Playgroud)
如果您想使用字母顺序打破平局:
print sort { split(' ',$a) <=> split(' ',$b) or $a cmp $b } <>;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3573 次 |
最近记录: |