本文是要讲linux 不打开文档/文件的情况下,替换文本内容。
打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim 替换文本 。

话题相关
#linux 文件替换字符串
#sed 字符串替换
#shell 文件替换某行
#linux 替换指定行内容
#linux 替换某行

linux一般用sed来替换文本到指定行。

基本语法

s (substitute)为查找替换命令

# 在输出或打印中,替换字符串。并不改变原文件内容
sed '作用范围s/替换查找目标/替换成为/替换目标option' 文件名# 替换字符串,并更改原文件内容
# 在sed后面加 -i,即编辑文档“edit files in place”选项
sed -i '作用范围s/替换查找目标/替换成为/替换目标option' 文件名

例,sed ‘s/cat/dog/g’ pet.txt
在全局范围(s前的作用范围无内容)查找cat并替换为dog,作用范围内每一行出现的不仅第一个目标,而是所有目标都会被替换(g)。

作用范围选项

  • 作用范围在全文的每一行,不写内容
# 作用范围在全文
sed 's/cat/dog/g' pet.txt

这一点这vim中的作用范围不太一样,vim中不写作用范围是作用于光标所在的当前行,而sed是指全文范围的每一行。

  • 指定行,写上行号;指定某行到某行,用逗号连接行号
# 作用范围在第1行
sed '1s/cat/dog/g' pet.txt# 作用范围在第6行到第10行
sed '6,10s/cat/dog/g' pet.txt# 作用范围在第6行到最后一行
sed '6,$s/cat/dog/g' pet.txt# 作用范围在指定行到其后2行,用加号(减号不可用)
sed '1,+2s/cat/dog/g' pet.txt

替换查找目标 写法

  • 替换某个字符串,就写这个字符串。
    这是最基本的用法。
# 替换cat这个字符串
sed '1s/cat/dog/g' pet.txt
  • 替换整行,用.*
    个人经验,替换一整行的情况是用的最多的。
# 替换第1行一整行为dog
sed '1s/.*/dog/' pet.txt
# 这里因为.*已代表一整行,所有后面写上/g和上面相同效果
sed '1s/.*/dog/g' pet.txt# 替换全文的每1行为dog
sed 's/.*/dog/' pet.txt
# 这里因为.*已代表一整行,所有后面写上/g和上面相同效果
sed 's/.*/dog/g' pet.txt

例,

$ cat test.txt
a,b,c
a,b,c
# 替换第1行整行
$ sed '1s/.*/hello/g' test.txt
hello
a,b,c
$ sed '1s/.*/hello/' test.txt
hello
a,b,c# 替换全文每一行的全部内容
$ sed 's/.*/hello/g' test.txt
hello
hello
$ sed 's/.*/hello/' test.txt
hello
hello
  • 替换一个字符,用.
    这个用的相对少一些。
# 替换第1行的每一个字符
sed '1s/./dog/g' pet.txt# 替换第1行的第1个字符
sed '1s/./dog/' pet.txt# 替换第1行的第5个字符
sed '1s/./dog/5' pet.txt

例,

$ echo '123'|sed 's/./dog/g'
dogdogdog
$ echo '123'|sed 's/./dog/'
dog23
$ echo '123'|sed 's/./dog/3'
12dog
# 字符也包括符号
$ echo ',123'|sed 's/./dog/1'
dog123

替换目标option

  • 前面出现的g,作用范围内行的所有查找目标,而不仅是第一个查找目标
# 替换全文每一行的每一个 cat 为 dog
sed 's/cat/dog/g' pet.txt
  • 没有g,作用范围内所在行的第1个目标
# 替换全文每一行的第1个 cat 为 dog
sed 's/cat/dog/' pet.txt
  • 不打印出全文,仅打印更改所涉及行,或者说仅打印受影响的行
    在sed后面加 -n,是阻止默认的自动打印模式的选项,
    同时在 替换目标option 的位置 写上 p,表明打印print。
# 打印发生替换的行
sed -n 's/cat/dog/gp' pet.txt

sed的y命令

不同于上面的s命令,以字符串或模式为单位替换为一个整体,y是罗列置换每个对应的字符。

语法

sed 'y/查找的各个字符/对应替换后的各个字符/' 文件名

sed ‘y/abc/123’ test.txt ,这个命令会依次替换a,b,c为1,2,3 。
查找的各个字符对应替换后的各个字符的长度要一致。

例,

$ echo 'a,b,c,d,e'|sed 'y/abcde/12345/'
1,2,3,4,5$ cat test.txt
a,b,c
a,b,c
$ sed 'y/abcde/12345/' test.txt
1,2,3
1,2,3

再比如 $ sed ‘1,5y/abcde/ABCDE/’ test.txt 是把1-5行内所有abcde转变为大写,但是,正则表达式元字符不能使用这个命令。
例,

$ cat copy.txt
wang yi
zhang san
li qi# 想要把1-2行的小写转化为大写,正则表达式不可用
$ sed '1,2y/[a-z]/[A-Z]/' copy.txt
wAng yi
ZhAng sAn
li qi# 罗列全部字母,来替换
$ sed '1,2y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' copy.txt
WANG YI
ZHANG SAN
li qi

(以上。)

linux 给文件替换字符串/替换内容/替换某行 (shell,sed)相关推荐

  1. Pyhton 正则替换字符串指定内容

    [top] Pyhton 正则替换字符串指定内容 文章目录 Pyhton 正则替换字符串指定内容 1. 说明 2. 场景 3. 解决方法 1. 说明 正则表达式的Sub模块,只能能提供正常全匹配,并进 ...

  2. linux替换某一行中字符串,linux 给文件替换字符串/替换内容/替换某行 (shell,sed)...

    本文是要讲linux 不打开文档/文件的情况下,替换文本内容. 打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim 替换文本 . 话题相关 #linux 文件替换字符串 #sed ...

  3. JAVA编码 —— 字符串关键字内容替换

    前言 工作中,我们可能遇到字符串内容替换的场景.例如:我们需要将一个字符串凡是 "#" 标注的,分别替换为不同的内容,那我们应该怎么做呢? 分析,一个字符串可能含有多个" ...

  4. mysql正则替换字符串某些内容_mysql基于正则实现模糊替换字符串的方法分析

    本文实例讲述了mysql基于正则实现模糊替换字符串的方法.分享给大家供大家参考,具体如下: 例如: abcd(efg)hijk 替换之后是abcdhijk 复制代码 代码如下: update taba ...

  5. c语言文件替换字符串,C语言替换字符串

    #include #include #include /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://communit ...

  6. php 数组 批量替换字符串,php数组替换字符串

    PHP5常用函数 PHP已经更新到很多个版本,最近用的比较多的要数PHP5.下面我们为大家总结了PHP5常用函数,以便大家将来实际编写代码中查看. pathinfo返回文件路径的信息 ,包括以下的数组 ...

  7. nginx html 替换,Nginx 服务内容替换功能(sub模块)

    Nginx 服务提供修改返回客户端内容的功能:也就是,当Nginx服务返回给浏览器内容时,可以修改返回的内容. 一.with-http_sub_module模块 1.1.sub_filter stri ...

  8. vim 批量替换字符串_vim批量替换,效率就是高。附常用批量替换命令

    语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为: :%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. "1,20" ...

  9. python替换字符串元素_python替换字符串中的子串图文步骤

    python替换字符串中的子串图文步骤 修改字符串本身是不可能的,因为字符串是不可变类型,只能是通过某些方法来产生它的副本.再把副本赋值给原字符串,达到类似替换的作用.这里介绍几种方法. 旧串换新串: ...

最新文章

  1. 机器学习实战读书笔记(3)朴素贝叶斯
  2. 二进制求和Python解法
  3. Dentry negativity/negative dentry
  4. 操作计算机的英文,操作计算机必读的53个英文单词
  5. 实战(一):对“钉钉”的逆向(实现打卡功能)
  6. 字符串反转的进一步应用----单词反转
  7. 转四种常见的post请求
  8. 计算机网络中的A类、B类、C类地址的划分
  9. 数据结构教程 李春葆主编 (第5版)绪论笔记
  10. 用Sniffer和ARP分析网络问题
  11. 《人生算法》(七)认定方向、坚定执行
  12. 有关c基础指针需要注意的几个点!
  13. 别只关注M1芯片的苹果笔记本,iOS APP支持在 Mac上运行也是大事
  14. 生僻字用计算机的歌词,生僻字歌词带拼音版本:生僻字歌词是什么意思?
  15. 对8421码,5421码,2421码,余3码的理解
  16. Word功能-“多级列表”-用法笔记
  17. Linux:TTY串口接收中断
  18. 医院管理信息系统解决方案
  19. 与MySQL的第一次亲密接触
  20. 略读hashMap源码

热门文章

  1. 小米蓝牙音箱固件、升级工具
  2. MySQL全版本安装步骤
  3. android 手机号码隐藏其中4位
  4. tps5430应用电路详解_TPS5430的应用(1)
  5. Agora Flat 开源教室一周年总结
  6. 数据结构-线性表(链式存储结构)
  7. 图像识别的预处理技术
  8. 【C#】公元前后天干地支纪年法
  9. js验证用户输入的 座机/手机/固定电弧 格式是否正确
  10. 打开图片链接直接打开QQ对话框