sed 怎样在文本里指定位置插入字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed 怎样在文本里指定位置插入字符相关的知识,希望对你有一定的参考价值。

1:指定行数和列数,比如3行3列插入abc,或2行6列插入AAA,如下所示:

2:符合正则表达式的行,里面的第几列中插入内容:将上面的3s、2s改为/正则表达式/s,例如:

3:某行中,某个/些单词的后面或前面插入字符:

其他混合定位也类似,基本思路是用s替换,首先将位置放到捕获里面(小括号里面),后面用\\1引用搜索到的内容,可以在\\1后面或前面,或前后增加新的内容,就实现了“插入”功能

参考技术A 插入内容就是替换,比如在ABCD的前面插入123 参考技术B and cry, "God help us."

sed 以及 awk用法

  

sed 格式
sed[options] "script" FILE....

选项:
-n:静默模式,不输出模式空间内的内容;默认打印空间模式的内容
-r:扩展的正则表达式
-f 文件:指定sed脚本文件
-e ‘script‘ -e ‘script‘ :指定多个编辑指令
-i : 直接编辑原文件


编辑命令:
d:删除
p: 打印
i \text:在被指定到的行前面插入文本
a \text:在被指定的行的下面插入文本
\n:换行
r /path/file.txt:在指定位置把另外一个文件的内容插入
w /path/file.txt:将符合条件的所有行保存至指定文件中
=:显示符号条件的行的行号
s///:查找条件可以使用模式,但是要替换的内容不行

 

地址定界:自定义的起始行到结束行
startline,endline
1,3
/pat1/,/pat2/
/pattern/

用法:sed [options] ‘addr1[,addr2]编辑命令‘ FILE...
sed [options] "addr1[,addr2]编辑命令" FILE...

用法

1. 删除 /etc/puppet/puppet.conf 1到13行的数据
[[email protected] ~]# sed 1,13d /etc/puppet/puppet.conf

2. 删除以空格或者tab的集合开头的行
[[email protected] ~]# sed ‘/^[[:space:]]/d‘ /etc/puppet/puppet.conf 

3.删除空行
[[email protected] ~]# sed ‘/^[[:space:]]*$/d‘ /etc/puppet/puppet.conf

4.删除fstab中以/ 开头的行。
[[email protected] ~]# sed ‘/^\//d‘ /etc/fstab

5.删除第2行到第一次出现 / 的行,结束是在/ 行后
[[email protected] ~]# sed ‘2,/^\//d‘ /etc/fstab

6.删除以 # 开始到第一次出现 / 的行,结束是在/ 行后
[[email protected] ~]# sed ‘/^#/,/^\//d‘ /etc/fstab
7.显示打印以 # 开始到第一次出现 / 的行,结束是在/ 行后
[[email protected] ~]# sed -n ‘/^#/,/^\//p‘ /etc/fstab
8.在空行前添加 11111111111111 
[[email protected] ~]# sed ‘/^$/i \111111‘ /etc/fstab
[[email protected] ~]# sed ‘/^[[:space:]]*$/i \111111‘ /etc/fstab
9.在空行后添加 11111111111111 
[[email protected] ~]# sed ‘/^$/a \111111‘ /etc/fstab
[[email protected] ~]# sed ‘/^[[:space:]]*$/a \111111‘ /etc/fstab

10.在大写字母后添加2行
[[email protected] ~]# sed ‘/^[[:upper:]]/a \aaaaaaaaaaa\nbbbbbbbbb‘ /etc/issue

11. 在一个大写字母行后,把另一个文件内容追加进来。
[[email protected] ~]# sed ‘/sda2/r /etc/issue‘ /etc/fstab

12. 将fstab 中包含 / 的保存在/tmp/file.txt中
sed ‘/\//w /tmp/file.txt‘ /etc/fstab

13.显示匹配的行号
[[email protected] ~]# sed ‘/\//=‘ /etc/fstab






 

以上是关于sed 怎样在文本里指定位置插入字符的主要内容,如果未能解决你的问题,请参考以下文章

Sed - 在两个字符串之间的匹配模式后插入带文本的行

sed命令在文件中替换、插入

[坑]sed命令替换指定字符后不固定字符串,文本信息的替换删除

[坑]sed命令替换指定字符后不固定字符串,文本信息的替换删除

Solaris里面的sed怎样把指定字符替换成换行

在EXCEL中怎样提取字符串中的最后一个字符