我需要把每个第二和第三列的单元格按顺序排列。因此,如果XN > XN,则需要交换XN和XN,其中X-矩阵,N-任何自然数,我有如下表文件:
A 9 1 2
B 8 7 F
C 2 4 X
D 3 1 1我要去拿这个
A 1 9 2
B 7 8 F
C 2 4 X
D 1 3 1因此,线顺序保持不变,但一些细胞习和习被交换。
我曾考虑过在xargs、、、cut和sort中使用管道,但这似乎不是一个好主意。有什么建议要挖吗?
发布于 2020-12-08 14:03:03
这可以通过一个小的awk脚本来解决:
# 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
发布于 2020-12-08 14:04:45
awk '$2 > $3 { temp3=$3;$3=$2;$2=temp3 }1' file使用awk。如果第二个空格分隔字段大于第三个空格分隔字段,则将一个临时变量(temp3)设置为第三个空格分隔字段,将第三个字段设置为第二个字段,将第二个字段设置为临时变量。用短手1打印所有行
https://stackoverflow.com/questions/65200191
复制相似问题