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