本文是要讲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' 文件名

1

2

3

4

5

6

例,sed ‘s/cat/dog/g’ pet.txt

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

作用范围选项

作用范围在全文的每一行,不写内容

# 作用范围在全文

sed 's/cat/dog/g' pet.txt

1

2

这一点这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

1

2

3

4

5

6

7

8

9

10

11

替换查找目标 写法

替换某个字符串,就写这个字符串。

这是最基本的用法。

# 替换cat这个字符串

sed '1s/cat/dog/g' pet.txt

1

2

替换整行,用.*

个人经验,替换一整行的情况是用的最多的。

# 替换第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

1

2

3

4

5

6

7

8

9

例,

$ 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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

替换一个字符,用.

这个用的相对少一些。

# 替换第1行的每一个字符

sed '1s/./dog/g' pet.txt

# 替换第1行的第1个字符

sed '1s/./dog/' pet.txt

# 替换第1行的第5个字符

sed '1s/./dog/5' pet.txt

1

2

3

4

5

6

7

8

例,

$ 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

1

2

3

4

5

6

7

8

9

替换目标option

前面出现的g,作用范围内行的所有查找目标,而不仅是第一个查找目标

# 替换全文每一行的每一个 cat 为 dog

sed 's/cat/dog/g' pet.txt

1

2

没有g,作用范围内所在行的第1个目标

# 替换全文每一行的第1个 cat 为 dog

sed 's/cat/dog/' pet.txt

1

2

不打印出全文,仅打印更改所涉及行,或者说仅打印受影响的行

在sed后面加 -n,是阻止默认的自动打印模式的选项,

同时在 替换目标option 的位置 写上 p,表明打印print。

# 打印发生替换的行

sed -n 's/cat/dog/gp' pet.txt

1

2

sed的y命令

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

语法

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

1

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

1

2

3

4

5

6

7

8

9

再比如 $ 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

https://51.ruyo.net/?s=%E6%9D%8F%E5%BD%A9%E6%80%BB%E4%BB%A3Q%E3%80%9078100501%E3%80%91%E2%96%88%E2%96%88%E2%96%88/

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

版权声明:本文为CSDN博主「Olivia_Vang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Olivia_Vang/article/details/104091358

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

  1. sql数据库备份默认路径_在Linux上SQL Server中更改默认数据库文件和备份路径

    sql数据库备份默认路径 In a previous article, we explored the process to change default SQL dump file location ...

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

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

  3. linux 在沙盒中运行,Linux容器的细粒度沙盒策略执行方法与流程

    本发明专利属于计算机技术领域,涉及云计算安全方向.更具体的讲,本发明专利涉及一种Linux容器的细粒度沙盒策略执行方法. 背景技术: Linux容器技术采用命名空间将进.文件.设备等资源进行隔离,为用 ...

  4. visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目

    在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...

  5. 转储sql文件_在Linux上SQL Server中更改SQL转储文件位置

    转储sql文件 In this article, we will talk about SQL Dump files and the process to change the dump direct ...

  6. 在win7系统上装linux,在Windows操作系统中安装Linux系统

    很多人对我写下面的东西已不屑一看了,但我写这个帖子的原因是:很多在Windows下想安装Linux的人不知如何开始,如何下手安装.等进入到安装界面又出现了很问题.不得不中途放弃. 好了,从我做起,开始 ...

  7. vr 软件linux,你在VR中使用Linux系统已不是梦想

    原标题:你在VR中使用Linux系统已不是梦想 2018年04月03日,对于VR,我们相当熟悉Oculus Rift.HTC Vive.PSVR和其他热门的品牌,但VR同样来到了Linux. Safe ...

  8. java读取文件到字符串_Java读取文件到字符串

    java读取文件到字符串 Sometimes while working with files, we need to read the file to String in Java. Today w ...

  9. linux怎么释放cached中内存,Linux 释放cached内存

    使用free -m 查看系统使用的内存情况: # free -m total      used      free      shared      buffers -/+ buffers/cach ...

最新文章

  1. BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题
  2. 一篇文章带你详解 TCP/IP 协议(上)
  3. 大数据算法岗位面试题
  4. redis下key的过期时间详解
  5. Qt中的串口编程之一
  6. 加速新冠疫苗研发,阿里云免费开放一切AI算力!
  7. Arduino IDE下载安装ESP8266/32慢的解决办法
  8. stm32 /*入门1~100步要点全记录
  9. 使用NetKeeper导致电脑右下角任务栏网络图标消失不见的解决方法
  10. 网站流量统计分析工具,谷歌seo网站流量统计分析工具推荐
  11. 手机回收ATM面世,无人回收会成为下一个风口吗?
  12. Sorting a Three-Valued Sequence 三值的排序
  13. 苹果xsmax怎么开机_苹果XSMAX手机进水不开机怎么办?看小伙如何完美修复!
  14. 如何利用微信生态为教育行业提高招生率?
  15. linux与linux驱动
  16. cad怎么倒圆角_15个超实用CAD技巧,效率递增10倍,设计院师傅都在用
  17. MySQL(数据类型)
  18. 从c++到java+android
  19. 门店定位怎么在地图上显示_怎么能让顾客在地图上搜索到自己店的位置?
  20. 【Solr】——搜索引擎的部署及使用

热门文章

  1. C++ ARX二次开发-BREP库
  2. Citespace使用教程2
  3. Java实现GeoHash算法
  4. 谷歌再失华裔高管,AI 中国中心总裁李佳离职;树莓派新品发布
  5. 中国艺术《懼》孙溟㠭书画
  6. 多因子选股模型python_什么是多因子量化选股模型?
  7. 中专计算机春季2020招生学校,2020年春季招生的铁路学校
  8. 《Android自定义控件》WindMillView,仿华为天气风车效果
  9. ZGC这是要上天吗?
  10. 2017微软MVP:在AWS上部署免费的Shiny应用