linux中sed命令实现任意两行数据的互换

1、测试数据

[root@centos7pc1 test2]# cat test.txt
1 x c
2 s d
3 e t
4 d s
5 j u
6 n x

 

2、程序

[root@centos7pc1 test2]# cat swap.sh
#!/bin/bash
temp1=$(sed -n "$1p" $3)
temp2=$(sed -n "$2p" $3)
sed "$1c $temp2" $3 -i
sed "$2c $temp1" $3 -i

 

3、测试

[root@centos7pc1 test2]# ls
swap.sh  test.txt
[root@centos7pc1 test2]# cat test.txt    ## 测试数据
1 x c
2 s d
3 e t
4 d s
5 j u
6 n x
[root@centos7pc1 test2]# cat swap.sh   ## 程序
#!/bin/bash
temp1=$(sed -n "$1p" $3)
temp2=$(sed -n "$2p" $3)
sed "$1c $temp2" $3 -i
sed "$2c $temp1" $3 -i
[root@centos7pc1 test2]# bash swap.sh 1 3 test.txt   ## 1和3为交换的行号, test.txt为处理的文件
[root@centos7pc1 test2]# ls
swap.sh  test.txt
[root@centos7pc1 test2]# cat test.txt     ## 查看交换结果
3 e t
2 s d
1 x c
4 d s
5 j u
6 n x

 

[root@centos7pc1 test2]# ls
swap.sh  test.txt
[root@centos7pc1 test2]# cat test.txt
3 e t
2 s d
1 x c
4 d s
5 j u
6 n x
[root@centos7pc1 test2]# cat swap.sh   ## 程序
#!/bin/bash
temp1=$(sed -n "$1p" $3)
temp2=$(sed -n "$2p" $3)
sed "$1c $temp2" $3 -i
sed "$2c $temp1" $3 -i
[root@centos7pc1 test2]# bash swap.sh 2 5 test.txt   ## 第2行和第5行进行互换
[root@centos7pc1 test2]# ls
swap.sh  test.txt
[root@centos7pc1 test2]# cat test.txt    ## 查看交换结果
3 e t
5 j u
1 x c
4 d s
2 s d
6 n x

 

posted @ 2022-04-02 14:31  小鲨鱼2018  阅读(420)  评论(0编辑  收藏  举报