Linux sed命令实现替换文本内容

129次阅读
没有评论

共计 1325 个字符,预计需要花费 4 分钟才能阅读完成。

方案一:

sed -e 's/localhost:7051/peer0.org1.example.com:7051/' -e 's/localhost:7053/peer0.org1.example.com:7053/' -e 's/localhost:7054/ca.org1.example.com:7054/'  -e 's/localhost:7050/orderer.example.com:7050/'  < $HOME/.composer/cards/jdoe@trade-network/connection.json  > /tmp/connection.json && cp -p /tmp/connection.json $HOME/.composer/cards/jdoe@trade-network/

sed:流编辑器

-e:多点编辑

<:输入文件

>:输出文件

上边命令的作用就是将$HOME/.composer/cards/jdoe@trade-network/connection.json这个文件作为输入(前边用了<符号),将文件内容中的logcalhost:7051替换为/peer0.org1.example.com:7051,后边的类似。然后替换后的文件临时放在/tmp/connection.json,并通过cp -p命令把更换内容后的文件替换原来的文件。

为什么不直接输出呢,还用个临时文件。原因就是当直接这样

sed -e 's/a/1/' < ./testset.txt > ./testset.txt

会导致整个testset.txt的文件被清空。当指定其他的一个文件后,它才会将变更后的内容写进指定的这个文件中。cp -p实现复制并保留临时文件。

方案二:

sed -i 就是直接对文本文件进行操作的

sed -i 's/原字符串/新字符串/' /home/1.txt

sed -i 's/原字符串/新字符串/g' /home/1.txt

这两条命令的区别就是,看示例吧

这是1.txt的内容

#cat 1.txt

d

ddd

#ff

再看执行这两条命令的区别吧

sed -i 's/d/7523/' /home/1.txt

执行结果

7523

7523dd

#ff

sed -i 's/d/7523/g' /home/1.txt

执行结果

7523

752375237523

#ff

去掉 “行首” 带“@”的首字母@

sed -i 's/^@//' file

 

特定字符串的行前插入新行

sed -i '/特定字符串/i 新行字符串' file

 

特定字符串的行后插入新行

sed -i '/特定字符串/a 新行字符串' file

 

特定字符串的删除

sed -i '/字符串/d' file

 ———————————————— 

版权声明:本文为CSDN博主「帅气的梧桐述」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/h363659487/article/details/81262361

正文完
 
admin
版权声明:本站原创文章,由 admin 2019-08-20发表,共计1325字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码