Linux中怎么对第一列排序,然后输出的结果把第二列的数据带上。

Linux中怎么对第一列排序,然后输出的结果把第二列的数据带上。,第1张

#!/bin/bash

####/autorun/aa/yy.log是原始数据的路径,自己替换,注意先删除第一行的enbid rsrp,最后结果会加上

count=`cat /autorun/aa/yy.log|wc -l`

cat /autorun/aa/yy.log|awk '{print $1}' >/autorun/aa/yy2.log

let i=0

arr=()

while read line

do

arr[$i]=$line

let i=i+1

done </autorun/aa/yy2.log

len=${#arr[*]}

let len=len-1

###进行冒泡排序

for((i=0i<$leni++))

do

let len=len-i

for((j=0j<lenj++))

do

let k=j+1

if [ ${arr[$j]} -ge ${arr[$k]} ]then

temp=${arr[$k]}

arr[$k]=${arr[$j]}

arr[$j]=$temp

fi

done

done

echo "enbid rsrp">/autorun/aa/yy3.log

len=${#arr[*]}

for((i=0i<$leni++))

do

echo "`cat /autorun/aa/yy.log|grep ''${arr[$i]}''`">>/autorun/aa/yy3.log

done

[root@localhost ~]# a=""\

>b=""\

>tmp=""\

>read x\

>a=${x%%,*}\

>b=${x##*,}\

>if [ $a >$b ] then \

> tmp=$a\

> a=$b\

> b=$tmp\

>fi\

>echo $a $b

34,12

12 34

[root@localhost ~]#

可以看出我是直接把代码粘到终端上运行的,所以每一行后都有分号作语句分隔用,然后又用\断行,其实上面这么多行,是在同一行内。

每行前的 >是bash shell自动给出,因为它知道代码还没输完。你只要把下面这样的代码复制上去也就可以:

a=""\

b=""\

tmp=""\

read x\

a=${x%%,*}\

b=${x##*,}\

if [ $a >$b ] then \

tmp=$a\

a=$b\

b=$tmp\

fi\

echo $a $b

用history命令可以查询到我确实就相当于输入在同一行:

1022 a=""b=""tmp=""read xa=${x%%,*}b=${x##*,}if [ $a >$b ] thentmp=$a a=$b b=$tmpfiecho $a $b

1023 history

[root@localhost ~]#

直接上代码

#!/bin/bash

echo -n "请输入数字(多个数字间用空格隔开): "

read s

a=($s)

l=$((${#a[@]}-1))

for i in `seq 1 $l`do

f=true

for j in `seq $l -1 $i`do

if [ ${a[$j]} -gt ${a[$((j-1))]} ]then

m=${a[$j]}

a[$j]=${a[$((j-1))]}

a[$((j-1))]=$m

f=false

fi

done

if $fthen

break

fi

done

echo ${a[@]}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7529763.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存