使用sed命令,进行简单排序,更改源文件


首先,要排序的文件叫TestFile

[sroot@AAEP7151 shell]# cat TestFile

A:4

B:5

C:1

D:3

E:2


字母后边是序号,要按照正确的12345顺序排列。 


脚本名字叫setup.sh

[sroot@AAEP7151 shell]# cat sed.sh

#!/bin/bash

TestFile=/home/craft/shell/TestFile


 Testcontent=`awk -F: '{print $2}' $TestFile`  拿到第二列


 echo $Testcontent

for init in $Testcontent;do

   temp0=$(grep $init $TestFile |awk -F: '{print $1}')  拿到第一列

    sed -i '/'"$init"'/a'"$temp0"'' test    

    sed -i "/$init/a $temp0" test      两种方法都可以

done

 原来test文件里面,是序号12345

以A:4举例 , init=4,用sed指令,把A查到test的第四列后

同样的把B查到第5列后,进行排序。


运行sed.sh的结果是

[sroot@AAEP7151 shell]# ./sed.sh

4 5 1 3 2

test的内容变成

[sroot@AAEP7151 shell]# cat test

1

C

2

E

3

D

4

A

5

B

6

如果不用插入,用替换 sed -i '/'"$init"'/c"$temp0"'' test    

结果如下

[sroot@AAEP7151 shell]# cat test

C

E

D

A

B


另外,这个功能用sort就可以实现

[sroot@AAEP7151 shell]# sort +1 -2 -n -t : TestFile

C:1

E:2

D:3

A:4

B:5