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 @   小鲨鱼2018  阅读(222)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-12-25 利用GEMMA进行GWAS分析
2020-12-25 C语言获取数值的最后几位数
点击右上角即可分享
微信分享提示