Linux 基本命令之sed 的用法:替换、删除、插入、修改、转换、打印

##### sed
 cat filename.txt	//先查看文件内容
 sed -n '/header/!p' filenamme.txt	//p:只打印文件中包含单词header的那行;
    !:除了包含header那行,其它的都别打印出来。
 sed 's/test/trial/' filename.txt	//s:替换命令,默认替换每行出现的第一处
	# s/oldstring/newstring/2	//只替换每行第2处的内容
	# s/oldstring/newstring/g	//替换文本中所有匹配的内容
	# s/oldstring/newstring/p	//打印匹配的内容
	# 's/oldstring/newstring/w newfile.txt’ filename.txt //w:将替换内容输出保存

到指定文件

 sed -n 's/test/trial/p' filename.txt	//p和n配合使用:只输出被替换命令修改过的行
 sed -n '2,3p' filename.txt	//快速打印第2,3行数据
 sed -n '/number 3/p' filename.txt 	//只打印包含number 3的行

 sed 's/\/bin\/bash/\/bin\/csh/' /etc/passwd	//替换/etc/passwd文件中的bash shell

 sed 's!/bin/bash!/bin/csh!' /etc/passwd	//!可以代替/作字符串分隔符

 sed '2s/oldstring/newstring/' filename.txt	//只修改文件中第二行
	# '2,3s/oldstring/newstring/' 		//修改[2,3](第二到第三行)
	# '2,$s/oldstring/newstring/'		//从第二行开始一直修改到最后一行

 sed '2,${s/oldstring_0/newstring_0/;s/oldstring_1/newstring_1/}' filename.txt//执

行多条命令

 sed '2d' filename.txt	//删除第二行
 sed '2,3d' filename.txt	//删除指定行区间内容
 sed '/string/d' filename.txt	//删除指定字符串
 sed '/1/,/3/d' filename.txt	//从第一行开始删除,删除完第三行为止。

 echo "Test Line 2" |sed 'i\Test Line 1'	//在指定行前面插入新行
 echo "Test Line 2" |sed 'a\Test Line 1'	//在指定行后面插入新行
 sed '3i\This is an inserted line.' filename.txt	//将新行插到第三行前
 sed '3a\This is an inserted line.' filename.txt	//将新行插到第三行后
 sed '$a\ This is a new line of text.'filename.txt	//将新行插到最后一行后
 sed '1i\This is one line of new text.\This is another line of new text.'filename.txt	//插入多行文本


 sed '3c\This is a changed line of text.'filename.txt	//c:指定修改第几行,这里是将第三行改成指定替换内容

 sed '/number 3/c\This is a changed line of text.'filename.txt	//将包含number 3的行改

成指定替换内容
 sed '2,3c\This is a changed line of text.'filename.txt  //将第二和第三行改成指定替换

内容(即,一行文本替换两行文本)



sed 'y/123/789/' filename.txt	//把原来内容中的123 分别转换为789,如果长度不同会产生错

误。
如:$ echo "This 1 is a test of 1 try." | sed 'y/123/456/'
	This 4 is a test of 4 try.



sed -n '/3/{ p;s/line/test/p}' filename.txt//先用p命令打印原始行,再用s命令替换文本,

用p命令打印替换结果。


sed '=' filename.txt //打印行号
sed -n '/string/{=;p}' filename.txt	//只显示包含匹配文本模式的行的行号和文本


sed 's/<.*>//g' filename.txt	// 删除所有<>里面的内容,即删除HTML标签


sed 's/<[^>]*>//g;/^$/d' filename.txt// 前面的是删除:<title>This is the page 

title</title>中的标签/^$/d:删除多余空白行


sed -n 'l' filename.txt	//打印数据流中的文本和不可打印的ASCII字符:如,制表符:\t;换行符:$。


 sed '3r added.txt' filename.txt	//在filename文件第三行后插入added文件中的数据
 sed '/string/r added.txt' filename.txt//在filename文件关键字所在行的后面插入added文件
 sed '$r added.txt' filename.txt	//在filename文件末尾添加文本


 sed '/LIST/{r file11.txt;d}' filename.txt//在LIST所在行后插入文本,并删除LIST所在的行

##### 正则表达式识别的特殊字符:
	. * [] ^ $ {} \ + ? | ()
	前面需要加反斜杠\,告诉正则表达式引擎应该将接下来的字符当作普通的文本字符。
	使用正斜杠出现在正则表达式中,就会得到一个错误,也必须使用\
	正则表达式中,空格也是字符。

sed -n '/^this/p' file.txt	//打印由this开头的行
sed -n '/s^/p' file.txt	//^要放到文本模式开头,不然就是普通字符。


sed -n '/book$/p' file.txt	//打印以book结尾的行
sed '/^$/d' file.txt	//删除空白行

sed -n '/.at/p' file.txt	//.表示只要是at前面有内容,都可以匹配。

sed -n '/[ch]at/p' file.txt 	//只匹配cat和hat的行,过滤掉只有at的行

sed -n '/[0123]/p' file.txt	//匹配包含0123任一个数字的行

sed -n '/[^ch]at/p' file.txt	//匹配c或h之外的任何字符及文本模式

sed -n '/ie*k/p' file.txt	//可以匹配ik,iek,ieek,......e后面有一个*,表示e可以

出现0次或多次。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值