shell中的tee和sed命令

  • Post author:
  • Post category:其他




tee

(1)读取标准输入的数据,并将其内容输出成文件

(2)主要用于重定向到文件


常用参数


-a,将读取的内容追加到文件的后面,而不是覆盖(在默认的情况下是覆盖)

命令tee与重定向的区别

重定向,是将读取的内容输出到指定文件中,在屏幕上并不显示

命令tee,在屏幕上显示的同时,将读取的内容也重定向到指定文件中



sed

sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过


两种使用方法:


1、在命令行指定sed指令对文本进行处理: sed 选项 ‘指令’ 文件

2、先将sed指令保存到文件中,将该文件作为参数进行调用:

sed 选项 -f 包含sed指令的文件 文件


常用选项:


-e 告诉sed将下一个参数解释为一个sed指令,只有在命令行给出多个指令时才需使用。

-f 后面跟着sed指令文件

-n 取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行


sed中的指令


a: 追加 向匹配行后面插入内容

c: 更改 更改匹配行的内容

i: 插入 向匹配行前插入内容

d : 删除 删除匹配的内容

s: 替换 替换匹配的内容

p: 打印 打印出匹配的内容,通常与-n选项和用

=: 用来打印被匹配的行的行号

r,w:读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件



实例:

sed '/123/ahello' 1.txt

#向内容123后面添加hello,如果文件中有多行包括123,则每一行后面都会添加

sed  '$ahello'  1.txt  

#在最后一行添加hello

sed '/123/ihello'  1.txt 

#在包含123的行之前插入hello,如果有多行包含123,则包含123的每一行之前都会插入hello


sed '$ihello' 1.txt

#在最后一行之前插入hello


sed '1chello' 1.txt

#将文件1.txt的第一行替换为hello


sed '/123/chello' 1.tx

t #将包含123的行替换为hello


sed '4d' 1.txt

#删除第四行


sed '1~2d' 1.txt

#从第一行开始删除,每隔2行就删掉一行,即删除奇数行


sed '1,2d' 1.txt

#删除1~2行


sed '1,2!d' 1.txt

#删除1~2之外的所有行


sed '$d' 1.txt

#删除最后一行


sed '/123/d' 1.txt

#删除匹配123的行


sed '/123/,$d' 1.txt

#删除从匹配123的行到最后一行


sed '/^$/d' 1.txt

#删除空行


sed '/123\|abc/!d' 1.txt

#删除不匹配123或abc的行,/123|abc/ 表示匹配123或abc ,!表示取反


sed '1,3{/123/d}' 1.txt

#删除1

3行中,匹配内容123的行,1,3表示匹配1

3行,{/123/d}表示删除匹配123的行


sed 's/123/hello/' 1.txt

#将文件中的123替换为hello,默认只替换每行第一个123


sed 's/123/hello/g' 1.txt

#将文本中所有的123都替换为hello


sed 's/123/hello/2' 1.txt

#将每行中第二个匹配的123替换为hello


sed -n 's/123/hello/gpw 2.txt' 1.txt

#将每行中所有匹配的123替换为hello,并将替换后的内容写入2.txt

sed  '/#/s/,.*//g'  1.txt  

#匹配有#号的行,替换匹配行中逗号后的所有内容为空 (,.*)表示逗号后的所又内容

sed 's/^#.*//'  1.txt     

#将1.txt文件中以#开头的行替换为空行,即注释的行 ( ^#)表示匹配以#开头,(.*)代表所有内容