当前位置: 首页 > news >正文

linux shell 字符替换命令

sed

文本 2.txt 内容如下:

1
2
3
4
511
121abcabcc

1.替换文本指定字符或字符串,不更改原文件

将文本内容替换并输出,但不直接在原文档中修改: sed "s/旧字符串/新字符串/g" 文档
范例,将文本中的 1 替换为 b

root@heihei:/# sed "s/1/b/g" 2.txt
b
2
3
4
5bb
b2babcabcc
root@heihei:/#

2.替换文本指定字符或字符串,不更改原文件,存储更改的内容到新文件

再次查看文档 2.txt,内容是没有变化的,想要储存就需要把结果另存到新的文件中
如下:

root@heihei:/# sed "s/1/b/g" 2.txt >> 3.txt
root@heihei:/# cat 3.txt
b
2
3
4
5bb
b2babcabcc
root@heihei:/#

3.替换文本指定字符或字符串,直接更改原文件 加参数 -i即可

root@heihei:/# sed -i "s/1/b/g" 2.txt
root@heihei:/# cat 2.txt
b
2
3
4
5bb
b2babcabcc
root@heihei:/#

4.替换文本指定字符或字符串,字符串为变量
sed "s/$old_str/$new_str/g" 文档

root@heihei:/# new_str='b'
root@heihei:/# old_str='1'
root@heihei:/# sed "s/$old_str/$new_str/g" 2.txt
b
2
3
4
5bb
b2babcabcc

注意,需要用 双引号 “”,假设用的单引号 ‘’
命令需要改成 sed 's/'$old_str'/'$new_str'/g' 文档
否则无法执行成功:
失败案例:

root@heihei:/# new_str='b'
root@heihei:/# old_str='1'
root@heihei:/# sed 's/$old_str/$new_str/g' 2.txt
1
2
3
4
511
121abcabcc
root@heihei:/#

修改命令,成功达到预期结果

root@heihei:/# new_str='b'
root@heihei:/# old_str='1'
root@heihei:/# sed 's/'$old_str'/'$new_str'/g' 2.txt
b
2
3
4
5bb
b2babcabcc
root@heihei:/#

5.这里记录一次用 tr -t "旧字符串" "新字符串"进行替换时遇到的坑

tr -t "旧字符" "新字符" 应该是这样的作用,接字符串时会出现问题

他的作用等同于sed "s/旧字符串/新字符串/g" 文档,但是如果接字符串时,并不是我认为的
将符合的字符串进行替换,而是依旧按照单字符挨个替换,如下
如下:

root@sh-z390-01:~/test/sed# x="0010086,sds"
root@sh-z390-01:~/test/sed# echo $x |tr -t "10086" "01472"
4404472,sds
root@sh-z390-01:~/test/sed# echo $x |tr -t "10086" "01"
1101186,sds

如上面的例子,我们指定了旧字符串 “10086”,新字符串"01472"
但实际执行下来是将$x中所有的 1 更改为了0,所有的0 改成了1随后又被改为了4 ,8改成7,6改成2
实际上是按照
1 --> 0
0 --> 1
0 --> 4
8 --> 7
6 --> 2
这样的映射关系进行的单字符替换

http://www.lryc.cn/news/249163.html

相关文章:

  • Vue3生命周期函数(简述题)
  • 11月29日,每日信息差//雷军个人向武汉大学捐赠13亿元现金//看电视默认设置新规一览:开机广告不超 5 秒、不设置一键付费
  • 融资经理简历模板
  • iptables防火墙之SNAT与DNET
  • mysql使用--备份与恢复
  • 【vue实战项目】通用管理系统:信息列表,信息录入
  • 【驱动】SPI驱动分析(六)-RK SPI驱动分析
  • 【Linux】基础IO--文件基础知识/文件操作/文件描述符
  • Intellij IDEA 的安装和使用以及配置
  • Zynq-Linux移植学习笔记之67- 国产ZYNQ上通过GPIO模拟MDC/MDIO协议
  • Zookeeper(一)在WSL单机搭建Zookeeper伪集群
  • QT(18):QString
  • 宏工科技通过CMMI三级认证,软件研发能力获国际权威认可
  • 2次MD5加密——用于分布式对话
  • 用Java制作简易版的王者荣耀
  • android 保活的一种有效的方法
  • kibana安装
  • LV.12 D19 ADC实验 学习笔记
  • ubuntu配置免密登录vscode
  • 软件工程--面向对象分析用通俗语言20小时爆肝总结!(包含用例图、活动图、类图、时序图......)
  • HarmonyOS—ArkTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化【鸿蒙专栏-11】
  • 网络通信安全的坚固防线双向认证技术详解
  • Appium+python+unittest搭建UI自动化框架
  • 使用paddledetection的记录
  • MySQL数据库的备份与恢复
  • Pycharm配置jupyter使用notebook详细指南(可换行conda环节)
  • 企业微信ipad版,http协议接口发开,获取客户群列表
  • Double 4 VR智能互动教学系统在小语种课堂中的教学应用
  • OSEK OS任务调度的底层逻辑
  • ‘tsc‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。