首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash中只对表单元格进行排序

在bash中只对表单元格进行排序
EN

Stack Overflow用户
提问于 2020-12-08 13:48:42
回答 2查看 28关注 0票数 0

我需要把每个第二和第三列的单元格按顺序排列。因此,如果XN > XN,则需要交换XN和XN,其中X-矩阵,N-任何自然数,我有如下表文件:

代码语言:javascript
复制
A 9 1 2
B 8 7 F
C 2 4 X
D 3 1 1

我要去拿这个

代码语言:javascript
复制
A 1 9 2
B 7 8 F
C 2 4 X
D 1 3 1

因此,线顺序保持不变,但一些细胞习和习被交换。

我曾考虑过在xargs、、cutsort中使用管道,但这似乎不是一个好主意。有什么建议要挖吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-08 14:03:03

这可以通过一个小的awk脚本来解决:

代码语言:javascript
复制
# Swap X[N][2] and X[N][3] if X[N][2] > X[N][3]
$2 > $3 {
  tmp = $3
  $3 = $2
  $2 = tmp
}

# Print row
1

在脚本或shell中使用它作为一行程序:awk '$2 > $3 { tmp = $3; $3 = $2; $2 = tmp } 1' inputfile.txt

票数 0
EN

Stack Overflow用户

发布于 2020-12-08 14:04:45

代码语言:javascript
复制
awk '$2 > $3 {  temp3=$3;$3=$2;$2=temp3 }1' file

使用awk。如果第二个空格分隔字段大于第三个空格分隔字段,则将一个临时变量(temp3)设置为第三个空格分隔字段,将第三个字段设置为第二个字段,将第二个字段设置为临时变量。用短手1打印所有行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65200191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档