Linux 文本处理三剑客之 sed

参考链接: https://quickref.me/sed
语法格式:
	sed [options] command [input-file]
options Example: 
-i: 直接备份和修改输入文件 : sed -ibak 's/On/Off/' php.ini
-E: 使用扩展正则表达式 : sed -E 's/[0-9]+//g' input-file
-n: 取消打印默认图案空间 : sed -n '3 p' config.conf 
-f: 执行sed脚本文件 : sed -f script.sed config.conf
-e: 执行多个sed命令 : sed -e 'command1' -e 'command2' input-file 
Command Example:
p: sed -n '1,4p' fileName : 打印1-4行
d: sed '1,4d' filename : 打印1-4之外的内容
w: sed -n '1,4w output.txt' filename : 将fileName中的1-4行写入output.txt,即使output.txt 不存在也可以,有点类似于复制,指定内容的复制
a: sed '2 a new-line' fileName : 后面追加一行
i: sed '2 i new-line' fileName : 前面追加一行
Sed examples:
	cat report.txt | sed 's/Nick/John/g' 将report.txt中所有的Nick替换成功John, 仅改变打印在终端的内容,文本内容不会发生修改,g 是代表全局符号 还有其他Flag 

	1,2... : 替换第n次出现, 只能对每行出现的第几次进行修改

	w: 只将替换的行写入文件 cat report.txt | sed 's/Nick/John/w output.txt' 默认将每行	出现的第一次匹配的值修改后写入新的文件, output.txt可以不存在,在终端也会有输出,源文件如果存在空行,新文件不会存在空行情况

	I: 搜索时忽略大小写 

	echo '123abc' | sed 's/[0-9]+//g' 将数字去掉

	echo "hello world" | sed -e 's/h/H/g' -e 's/w/W/g' 将小写的字母替换成大写,执行多个匹配命令

	sed '5 s/old/new/' fileName 将第五行匹配到的内容修改输出到终端,不修改源文件

	sed 'hello/s/world/univers/' fileName 将hello为开头的行中匹配到的内容替换输出到终端,不会修改源文件
	
	sed 's/\\$//' fileName 将所有行最后的反斜线 \ 替换为空字符串
	
	sed 's/^\s*//' fileName 删除每行开头的所有空白 不会修改源文件
	
	sed 's/#.*$//' fileName 删除注释。即使是那些排在最后的 不会修改源文件
	
	sed 's/old/new/g' fileName 将文件中匹配到的内容修改后输出到终端,不会修改源文件
 	
 	sed 's/old/new/g' fileName > new.txt 将文件中匹配到的内容修改后输出到终端,不会修改源文件, 内容会输出到新文件中
 	
 	sed 's/old/new/g' -i fileName 将匹配的内容在源文件进行修改,不会输出到终端
 	
 	sed 's/old/new/g' -i.backup fileName 将匹配的内容在源文件中修改,并且将原来的内容备份到 fileName.backup 文件中
Sed examples:
echo 's/h/H/g' >> hello.sed
echo 's/w/W/g' >> hello.sed
echo 'hello world'| sed -f hello.sed  利用文件的方式替换小写字母为大写
Sed examples:
 	sed -n '/hello/p' fileName 将匹配到的内容所在行打印在终端
 	
 	sed -n '/hello/Ip' fileName 忽略大小写,将匹配到的内容所在行打印在终端
 	
 	sed -n '/hello/!p' fileName 在终端打印不匹配的内容
Sed examples:
	sed '2a Text after line 2' fileName 在第二行后面添加一行,在终端打印,不修改源文件

	sed '$a THE END!' fileName 在文件内容最后一行添加内容,打印在终端,不修改源文件
	
	sed '3~3a Some text' fileName 在每三行后添加一行内容,打印在终端,不修改源文件
Sed examples:
	sed = fileName | sed 'N;s/\n/\t/' 打印行号在终端输出,不修改源文件
	
	sed -n '$=' fileName 打印文件有多少行  类似 wc -l 
Sed examples:
	sed '5i line number five' fileName 在第五行前插入一行内容,在终端打印,不修改文件

	sed '5,7d' fileName 打印文件在终端,删除5-7行,不修改源文件

	sed '3~2d' fileName 从第三行开始每隔2行删除一次
	
	sed '$d' fileName 删除最后一行在终端打印,不修改源文件

	sed '/^Hello/d' fileName 删除 Hello开头的所在行在终端打印,不修改源文件

	sed '/^$/d' fileName 删除空行,在终端打印,不修改源文件

	sed '/^#/d' 删除`#`开头的所在行,在终端打印,不修改源文件

	sed '/^$/d;G' fileName 删除所有空行和双空格; 实测为每行之后添加一个空行,在终端打印,包括最后一行, 不修改源文件

	sed 'G;G' fileName 实测为每行之后添加两个空行,在终端打印,包括最后一行,不修改源文件

	sed 'n;G' fielName 实测每隔两个行之后添加一个空行,在终端打印,偶数行的最后一行后添加一个空行,奇数行不添加
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值