linux 中实现批量讲指定的行替换为特定的数据

 

001、 sed 实现

[root@PC1 test4]# ls
a.txt  coordinate.txt
[root@PC1 test4]# cat a.txt                     ## 测试数据
dd ff sd 1
ss aa ee 2
xx vv zz 3
ss ww rr 4
aa ff jj 5
nn mm kk 6
ss rr uu 7
yy uu ee 8
ww rr 88 9
[root@PC1 test4]# cat coordinate.txt           ## 计划替换的内容
3 MMM
5 GGG
8 QQQ
[root@PC1 test4]# cp a.txt a.txt.bak           ## 将原始文件备份
[root@PC1 test4]# cat coordinate.txt | while read {i,j}; do sed -i "$i s/.*/$j/" a.txt; done    ## 利用sed命令替换
[root@PC1 test4]# ls
a.txt  a.txt.bak  coordinate.txt
[root@PC1 test4]# cat a.txt                    ## 替换结果
dd ff sd 1
ss aa ee 2
MMM
ss ww rr 4
GGG
nn mm kk 6
ss rr uu 7
QQQ
ww rr 88 9

 

 

002、失败的尝试

[root@PC1 test4]# ls
a.txt  coordinate.txt
[root@PC1 test4]# cat a.txt                           ## 测试数据
dd ff sd 1
ss aa ee 2
xx vv zz 3
ss ww rr 4
aa ff jj 5
nn mm kk 6
ss rr uu 7
yy uu ee 8
ww rr 88 9
[root@PC1 test4]# cat coordinate.txt                  ## 计划替换的内容
3 MMM
5 GGG
8 QQQ
[root@PC1 test4]# cp a.txt a.txt.bak                  ## 备份数据
[root@PC1 test4]# cat coordinate.txt | while read {i,j}; do sed -i "$ic $j" a.txt; done    ## 利用sed整行替换,报错
sed: -e expression #1, char 2: unknown command: `M'
sed: -e expression #1, char 3: extra characters after command
sed: -e expression #1, char 3: extra characters after command
[root@PC1 test4]# cat a.txt
dd ff sd 1
ss aa ee 2
xx vv zz 3
ss ww rr 4
aa ff jj 5
nn mm kk 6
ss rr uu 7
yy uu ee 8
ww rr 88 9

 

posted @ 2022-12-25 11:37  小鲨鱼2018  阅读(213)  评论(0编辑  收藏  举报