【问题标题】:Sort numerical only part of the file bash仅对文件bash的数字部分进行排序
【发布时间】:2015-05-10 05:17:59
【问题描述】:

我的输入文件是:

b; 1 ; b; 1
a; 5 ; a; 5
g; 2 ; g; 2

我想要一个输出:

b; 1 ; b; 1
a; 5 ; g; 2
g; 2 ; a; 5

有人可以帮我吗?

【问题讨论】:

  • 你是如何从输入到输出的?您可以扩展“仅对文件 bash 的数字部分进行排序”吗?

标签: bash sorting numeric


【解决方案1】:
$ paste -d';' <(cut -d';' -f1,2 file) <( cut -d';' -f3,4 file | sort -t';' -n -k2)
b; 1 ; b; 1
a; 5 ; g; 2
g; 2 ; a; 5

工作原理

这会从输入文件中选择前两列:

$ cut -d';' -f1,2 file
b; 1
a; 5
g; 2

这会从输入文件中选择后两列,然后在最后一列对它们进行数字排序:

$ cut -d';' -f3,4 file | sort -t';' -n -k2
 b; 1
 g; 2
 a; 5

这使用进程替换,&lt;(...),将两个部分重新组合在一起:

$ paste -d';' <(cut -d';' -f1,2 file) <( cut -d';' -f3,4 file | sort -t';' -n -k2)
b; 1 ; b; 1
a; 5 ; g; 2
g; 2 ; a; 5

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2020-04-08
    • 2020-04-20
    • 2015-11-13
    • 1970-01-01
    • 2014-09-01
    • 2011-04-28
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多