7.4

1、sed

  sed:查找和替换

  sed '/root/'p test.txt,查找并打印包含root 的行,在显示时会显示文件所有内容,并将包含root的行打印两次

  sed -n '/root/'p test.txt:查找且只显示包含root的行

  同时,sed也支持. * 等特殊字符

  sed也支持+,在使用+时,需要使用-r进行脱译

  sed也支持{}、|等

  sed -n '2'p test.txt:打印第二行

  sed -n '2,5'p test.txt:打印第二到五行

  sed -n '25,$' test.txt:打印第25到末行

  sed -e '1'p -e'/bus/'p -n test.txt:其中-e选项表示要执行多个条件,打印第一行,然后查找并打印包含bus的行

  sed -n '/bus/'Ip test.txt:查找bus,且不区分大小写

  使用sed删除:

   sed ‘1,10’d test.txt:删除文件的前10行

  但上述删除方法并未真正将文件中内容进行删除,只是将前10不打印出来:

  使用-i选项可以删除文件内容,sed -i ‘1,25’d test.txt:删除文件的前25行,查看文件行数,只剩下5行

  也可以删除包含指定内容的行,sed -i '/user2/'d test.txt,删除包含user2的行

  

  使用sed替换

  sed '1,10s/root/toor/g' test.txt:将文件前10行中的root,替换成toor,其中s表示替换,g表示全局,执行此命令时会打印文件的全部内容,但是只有前10行进行替换

  进行替换时,也可以使用正则表达式,sed -r '1,10s/ro+/r/g' test.txt

  head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1'   将文件前10行中的第一段和最后一段进行替换,其中前面用括号括起来的内容在后面中用\表示出来,\1、\2、\3分别表示第一至三个括号中的内容

  如果替换的内容中包含有/,需要使用\进行脱译,head test.txt |sed 's/\/root/123/g',将文件前10行中的/root替换成123

  也可以修改分隔符,修改成@就可以执行

  

  使用sed删除指定的字符

  例如删除文件内的所有英文字符,sed 's/[a-zA-Z]//g',在删除时其实就是将指定的字符替换为空字符

  使用sed在所有行前面增加字符串

  sed -r ‘s/(.*)/aaa:&/’在文件所有行前增加aaa:,其中&表示前面的()

猜你喜欢

转载自www.cnblogs.com/w494129131/p/9256868.html
7.4