只对bash文件中的数字部分进行排序



我的输入文件是:

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

我想要一个输出:

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

有人能帮我吗?

$ 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

这使用过程替换<(...)paste,将两个部分重新组合在一起:

$ 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

相关内容

  • 没有找到相关文章

最新更新