shell脚本sed命令行编辑器

Posted zqq_hello_world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本sed命令行编辑器相关的知识,希望对你有一定的参考价值。

sed编辑器被称为流编辑器。sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在命令文本文件中。sed命令并不会影响原本文件,只会重新把改变的内容输出,如果需要改变原本内容需要用-i选项,sed -i

sed命令格式

sed [options] [script] [file]

修改文本内容

#s命令会将斜杠(/)指定的第二个字符串替换第一个字符串 
echo "this is text" | sed 's/this/that/' 
#修改文件内容,默认只会替换每行中出现的第一处 
sed 's/this/that/' /home/text 
#多命令修改内容,通过-e选项,通过分号(;)分割 
sed -e 's/this/that/;s/is/iss/' /home/text

默认只会替换没行出现的第一处,如果想要多替换需要使用替换标记

#格式。替换标记放在最后 
s/pattern/replacement/flags

四种可用的替换标记

1、数字,表明新文本将替换第几处模式匹配的地方

2、g,表明新文本将会替换所有匹配的文本

3、p,表明原先行的内容要打印出来

4、w file ,将替换的结果写到文件中

#替换文件中内容命令格式:sed 's/zqq/httlo/flags' filepath 
#替换第二处出现的字符串 
echo "zqq zqq test" | sed 's/zqq/hello/2' 
#替换所有匹配字符串 
echo "zqq zqq test" | sed 's/zqq/hello/g' 
#替换行内第一处匹配的字符串,然后并打印原字符串,-n选项 
echo "zqq zqq test" | sed -n 's/zqq/hello/p' 
#将替换结果写到文件中,只会把有匹配内容的字符串写到文件 
echo "zqq zqq test" | sed "s/zqq/hello/w /home/text"

替换分隔符

默认情况下sed命令是以反斜杠为分隔符,在linux中反斜杠用到的地方很多,在文本内容有反斜杠时需要用反斜杠(\\)来转义,看起来很不方便,sed编辑器允许选择其他字符来作为替换命令中的分隔符

#用!来替代/ 
echo "zqq/zqq hello" | sed 's!/zqq/zqq!zqq!g'

删除命令

sed编辑器可以删除固定的行

#删除文件第三行 
sed '3d' /home/text 
#删除指定区间,第二行,第三行 
sed '2,3d' /home/text 
#删除包含指定内容的行 
sed '/hello world/d' /home/text

插入和附加文本

sed编辑器允许向数据流插入喝附近文本。插入(i)会在指定行前增加一个新行。附加(a)会在指定行后增加一个新行

#将一个新行插入到数据第三行前 
sed '3i\\hello world' /home/text 
#将新行插入第三行后 
sed '3a\\hello world' /home/text 
#将新行插在末尾 
sed '$a\\hello world' /home/text

修改行

修改命令(c)允许修改数据流中整行文本的内容

#修改第三行内容 
sed '3c\\hello world' /home/text 
#修改匹配内容的所有文本行,把包含zqq的内容修改修改成hellworld 
sed '/zqq/c\\hello wolrd' /home/text 
#将多行文本替换指定文本,将2,3行替换成hello wolrd 
sed '2,3c\\hello world' /home/text

转化命令

转化命令(y)是可以处理单个字符的sed编辑器命令

#第一位7会替换前面的1,8会替换2,注意123和789不是一个字符,而是对应的位替换对应的单个字符, 
#如果前后字符数不相等会产生一条错误信息 
echo 'y/123/789/' /home/text 
#替换1,2,3 
echo "hello 1,2,3" | sed 'y/123/789/'

打印内容

#打印匹配zqq的行 
sed -n '/zqq/p' /home/text 
#打印第2行到第5行 
sed -n '2,5p' /home/text

以上是关于shell脚本sed命令行编辑器的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本sed命令行编辑器

shell脚本sed命令行编辑器

sed && awk工具 及一些经常使用的shell脚本

Shell脚本------sed编辑器

《Linux命令行与shell脚本编程大全》第二十一章 sed进阶

shell编程之sed