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
    评论
### 回答1: sed是一个强大的文本处理工具,常用于从标准输入或文件中读取文本,进行编辑和转换,并将输出写入标准输出或文件中。 以下是sed常用的命令选项: 1. -n:只显示经过sed编辑的行 2. -i:直接修改文件内容,不输出到终端 3. -e:允许多个命令一起执行 4. -f:从文件中读取sed命令进行处理 以下是sed常用的命令: 1. s:替换。语法为:s/要替换的内容/替换后的内容/g,其中g表示全局替换。 2. p:打印。将指定的行或所有行输出到终端。 3. d:删除删除指定的行或所有行。 4. a:追加。在指定行后面添加新的内容。 5. i:插入。在指定行前面插入新的内容。 6. w:写入。将指定行写入到文件中。 举例说明: 1. 将文件中的所有"cat"替换为"dog":sed -i 's/cat/dog/g' file.txt 2. 只显示文件中包含“hello”的行:sed -n '/hello/p' file.txt 3. 删除文件中的第3行:sed -i '3d' file.txt 4. 在文件中第2行后面添加一行内容:“hello world”:sed -i '2a hello world' file.txt 5. 将文件中第1行替换为“hello”并保存到另一个文件中:sed '1s/.*/hello/' file.txt > newfile.txt ### 回答2: sed是一种常用的Linux命令,其全称为Stream Editor,用于对文本进行处理和转换。它可以在命令行中以各种方式对文件内容进行修改,包括替换插入删除、追加等操作。 sed基本语法是`s/old/new/`,其中old表示待替换的字符串,new表示替换后的内容。sed命令会读取文件的内容,并对匹配到的old进行替换。如果需要对整个文件进行替换,则需要加上选项`-i`。 除了替换以外,sed还可以实现很多其他的文本操作。例如,通过`d`选项可以删除匹配到的行;通过`i`选项可以在指定行前插入文本;通过`a`选项可以在指定行后追加文本等。 另外,sed命令还可以使用正则表达式来进行模式匹配。通过在替换语句中使用正则表达式,可以对符合特定模式的字符串进行批量替换。 总之,sed是一种非常强大和灵活的文本处理工具,可以方便地对文件内容进行修改转换,提高工作效率。熟练掌握sed命令可以帮助我们更好地处理和编辑文本文件。 ### 回答3: sed(Stream Editor)是Linux中常用的文本处理工具之一。它可以对文本进行流式编辑,具体操作包括查找、删除替换插入行或字符等。 使用sed命令基本语法为: ``` sed [选项] '动作' 文件名 ``` 其中,选项可以包括: - -n:只显示或处理特定行; - -e:指定要执行的动作; - -f:从指定文件中读取动作。 动作部分可以包括: - 数字n:表示打印第n行; - p:打印匹配行; - d:删除匹配行; - s/old/new/:查找并替换文本; - a\text:在匹配行后插入文本; - i\text:在匹配行前插入文本。 以下是一些常用的sed命令示例: - 打印文件内容: ``` sed 'p' file.txt ``` - 删除匹配行: ``` sed '/pattern/d' file.txt ``` - 查找并替换文本: ``` sed 's/old/new/' file.txt ``` - 打印指定行数: ``` sed -n 'n' file.txt ``` - 在匹配行后插入文本: ``` sed '/pattern/a\text' file.txt ``` - 在匹配行前插入文本: ``` sed '/pattern/i\text' file.txt ``` 通过灵活运用sed命令,我们可以轻松地对文本文件进行各种编辑操作,提高工作效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值