听语音html
分步阅读linux
主要介绍下linux中sed命令的一些应用,sed主要用来对文件进行一些处理,好比打印,追加,删除,替换等,我这边只对使用率比较高的一些参数进行介绍正则表达式
首先我这边先建一个字母大小转换的脚本test2.sh,内容以下:spa
先介绍些sed -n的应用:htm
sed命令中p能实现打印匹配行的功能。咱们能够实际看下sed命令带-n和不带-n状况下有什么不一样。blog
sed -n "1p" test2.sh:带-n选项的话,只打印test2.sh脚本第一行匹配行。ci
sed "1p" test2.sh:不带-n的话,不只打印第一行匹配行,还打印输出test2.sh脚本的所有内容。rem
sed -n还能够打印文件的范围,好比打印test2.sh脚本的前两行,咱们就能够执行如下命令:sed -n "1,2p" test2.sh,就能够直接打印前两行。get
sed命令能够打印匹配模式行,好比打印test2.sh脚本匹配tr的行,就能够执行如下命令:it
sed -n /tr/p test2.sh。
remark:若是不带-n的话,除了打印匹配行外,还会打印脚本的所有内容。
sed -e的应用。只有当sed命令传递多个编辑命令式,才会使用到-e。好比:我想打印/tr/匹配行,而且打印匹配行所在的行号,此时存在多个sed参数,就要用到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每一个参数前都要带上-e:
sed a\追加命令,命令格式为:sed ’指定地址a\追加内容‘ 目标文件
这个追加内容在匹配行的下一行,只会输出到标准输出,原文件内容是不变的,例如在test2.sh脚本的/tr/所在的匹配行的下一行添加“#hello”内容,可须要执行:
sed '/tr/a\#hello' test2.sh
必定不要忘记单引号.
还有一个sed i\的追加命令,命令格式为:sed ’指定地址i\追加内容‘ 目标文件,跟a\不一样,i\追加是在指定位置的上一行追加命令
sed命令中还有一些特殊的匹配,好比元字符匹配,此时须要用转义符"\"屏蔽其特殊意义。
好比:sed -n ‘/\=/p’test2.sh,则打印输出tr一行。
$在正则表达式中表示尾行,执行sed -n ‘$p’ test2.sh则打印脚本尾行。
!表示取反,能够看如下两个例子
sed中可使用关键字来匹配行,打印咱们所须要的内容,好比,我但愿打印test2.sh第2,3行,能够执行:sed -n "2,3P" test2.sh,也能够执行sed -n "/tr/,/exit/p" test2.sh
sed c\的应用,命令格式为:sed ’指定地址c\替换内容‘ 目标文件。好比,#hello,替换test2.sh脚本的tr这行,能够执行命令:sed '/tr/c\#hello' test2.sh
sed删除d应用:好比我想删除test2.sh的第2行,能够执行如下命令:sed "2d" test2.sh或者sed /tr/d test2.sh
sed替换s应用:格式 sed s/被替换的字符/替换字符/[替换选项]
好比,我想把test2.sh中tr替换成大写的tr,则能够执行如下命令:sed ‘s/tr/TR/’test2.sh,则把脚本中的tr替换成TR,完后输出所有内容。
若是仅想打印替换所在行,则须要试用使用-n和-p:sed -n ‘s/tr/TR/p’ test2.sh:把脚本中的tr替换成TR,而后打印tr所在的行.
若是脚本中存在好几个tr,而且每一行也存在多个tr,若是执行以上命令的话,只会更改每一行的第一个出现的tr,若是要所有把tr转后为TR,则须要添加G参数:
sed -n ’S/tr/TR/pg’test2.sh。
w参数是定向输入参数,好比要把上述的变动定向输出到test1.txt中,则须要执行:
sed -n ’s/tr/TR/pgw test1.txt’ test2.sh。
也能够直接把选定的匹配内容写到另外一个文本中,好比想把test2.sh中tr这同样写到test2.txt中,执行:sed -n ’/tr/w test2.txt‘ test2.sh