Unix sed编辑器如何替换文件内容

本节将使用sample1.txt文件作为示例,文件内容如下,都是些水果..:

apple
orange
banana
pappaya

1.向每一行的开头添加内容,这里我们添加“Fruit:”

$ sed ‘s/^/Fruit: /‘ sample1.txt
Fruit: apple
Fruit: orange
Fruit: banana
Fruit: pappaya

解析:s代表substitution,也就是替换,s之后是要替换/匹配的内容,斜线/用来分隔s以及要替换的原始内容还有要替换的最终内容,而’^’符号是说一个正则,用来匹配每一行的开头,匹配成功后在开头加上’Fruit:’。

2.向每一行的行尾添加内容

$ sed ‘s/$/ Fruit/‘ sample1.txt
apple Fruit
orange Fruit
banana Fruit
pappaya Fruit

注意,这里的$和上一节的$符号表示的意义不同,这里则是表示行尾.

3.如何替换指定的字符,这里将小写a替换成大写A

$ sed ‘s/a/A/‘ sample1.txt
Apple
orAnge
bAnana
pAppaya

注意,仅仅将每一行的第一个a替换了,不是所有,本例表示替换单个字符,你可以替换一个单词都是可以的.

4.如何替换行内所有的字符,用A替换a

$ sed ‘s/a/A/g’ sample1.txt
Apple
orAnge
bAnAnA
pAppAyA

注意,只是加了一个g选项,g为global的简写,就是全局,全部的意思。

5.如何替换第二次出现的a?

$ sed ‘s/a/A/2’ sample1.txt
apple
orange
banAna
pappAya

不使用g,而是使用数字来表示行内第几次出现的a,结果如上

6.如何替换第二次之后的所有a呢?

$ sed ‘s/a/A/2g’ sample1.txt
apple
orange
banAnA
pappAyA

很好理解对吧。

7.如果只想替换第三行的a呢?

$ sed ‘3s/a/A/g’ sample1.txt
apple
orange
bAnAnA
pappaya

回想一下第一节,在执行命令之前,会判断当前address是否满足条件,3就是地址

8.想替换一个范围行内的数据呢

$ sed ‘1,3s/a/A/g’ sample1.txt
Apple
orAnge
bAnAnA
pappaya

逗号隔开,即可

9.如何替换整行呢?比如用apple is a Fruit替换apple

$ sed ‘s/./& is a Fruit/‘ sample1.txt
apple is a Fruit
orange is a Fruit
banana is a Fruit
pappaya is a Fruit

这里‘&’符号标识了模式匹配到的内容,而.匹配了正行,.表示任意字符,*表示一个或多个,也就是匹配了整行,&因此就是整行内容,用来重命名一组文件的时候非常有用.

10.如何进行多个替换,比如用A替换a,用P替换p

$ sed ‘s/a/A/g; s/p/P/g’ sample1.txt
APPle
orAnge
bAnAnA
PAPPAyA

也就是用分号分开即可。或者也可以通过-e参数来做

$ sed -e ‘s/a/A/g’ -e ‘s/p/P/g’ sample1.txt
APPle
orAnge
bAnAnA
PAPPAyA

-e 选项就是当需要替换多个的时候来用的。

另外,要是替换的太多。也可以通过右斜线来分成多行

$ sed -e ‘s/a/A/g’ > -e ‘s/p/P/g’ sample1.txt
APPle
orAnge
bAnAnA
PAPPAyA

相信通过本文实例分析,平时的文件内容替换就很简单了

时间: 2024-07-30 23:26:13

Unix sed编辑器如何替换文件内容的相关文章

linux下perl,sed,shell批量替换文件内容

  方法1: 这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的url统一指定到nexus本地中央库. 手 工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法,命令结构如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'下面这个例子就是将当前目录

Unix sed编辑器如何读写文件操作

本文将展示如何将文件内容读入到sed输出,同时包含如何将一个文件的部分内容写入到另一文件 一.文件读取 假定有两个文件,file1和file2,内容分别如下: $ cat file1 1apple 1banana 1mango $ cat file2 2orange 2strawberry sed有两个选项用来读写文件 r filename : 读取filename指定的文件内容 w filename : 将内容写入filename指定的文件 看例子: 1.在file1的每一行读完之后读取fil

java 如何替换文件内容 .doc或.rtf或.docx,求实现思路

问题描述 java 如何替换文件内容 .doc或.rtf或.docx,求实现思路 java 如何替换文件内容 .doc或.rtf或.docx,求实现思路 解决方案 用poi这个库去读取,然后程序中替换后写回. 解决方案二: 如果不想用专门处理的jar 包,可以写个模版,模版对要替换的字采用特殊标识符,然后读流,替换掉. 解决方案三: 用poi这个库去读取,然后程序中替换后写回.同时使用正则表达式

linux下批量替换文件内容的方法

  对于单个文件,使用sed命令很容易做到.如果需要替换某个指定文件夹下所有文件,借助grep和sed组合成一条命令也可以轻松搞定. grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件;参数"l"可以让grep输出包含指定字符串的文件名,首次匹配成功后立刻停止对同文件的查询.如果不使用"l",grep查询单个文件时输出文件中所有包含指定字符串的行,对文件夹查询时则按照

PowerShell读取文件内容、替换文件内容、读取限定行的例子_PowerShell

我只能说,使用PowerShell来读取文本文件实在是一件太简单的事情了. Get-Content,获取指定位置的项的内容. 语法:Get-Content [-Path] <文件路径> [-Path]由方括号引起,表示可以写,也可以不写:不写则默认后面是文件路径,写了就指名道姓的说后面是文件路径. 直接运行这样一个命令,PowerShell将会把文件的内容输出到控制台上,如果你是想看看文件的内容,那这样做就Perfect! 但有时候,你想玩点高难度的运作--想把文件翻开来对里面的内容进行修改,

Linux下如何利用find和perl正则替换文件内容

当你编写脚本或是安装程序的时候,就需要修改特定文件的数据,如果这时有自动修改文件的功能,那将会是非常实用的.例如,当你需要移动一个文件中的某个字符串或是命令,当你要改变许多文件的IP地址的时候,这个功能就可以拿来利用了. 手动改变这些文件会耗费很长的时间,特别当它是一件重复性的任务.但是,你可以使用Perl程序来完成.所有的Linux供应商都有这个程序.执行以下操作: $ perl -pi -e 's|[old_string]|[new_string]|g' [file] 字符串可以是简单的命令

Centos下批量替换文件中的内容shell脚本

Centos批量替换文件内容 这两天使用火车头采集了一些数据,由于生成了很多SQL文件.我想将每个SQL文件中的固定内容替换为另外的内容. 手工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法. 命令结构如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 下面这个例子将当前目录及所有子目录下的所有sql文件中的"恋香缘"替换为"http://www.111cn.

linux中批量查找替换文本内容例子

  .批量查找某个目下文件的包含的内容,例如: # grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. # sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./` sed的其他用法如下: 1.删除行首空格 sed 's/^[ ]*//g' filename sed 's/^ *//g' filename sed 's/^[[:space:]]*//g' filename 2.行

Centos下批量替换文件中指定字符串

这两天使用火车头采集了一些数据,由于生成了很多SQL文件.我想将每个SQL文件中的固定内容替换为另外的内容. 手工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法. 命令结构如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 下面这个例子将当前目录及所有子目录下的所有sql文件中的"恋香缘"替换为"www.111cn.net" find -name *