六周第二次课 9.4/9.5 sed

9.4/9.5 sed


sed 后面带p 匹配指定的行

六周第二次课 9.4/9.5 sed

  • sed命令比grep更强大,除了拥有查找功能外,还拥有替换功能
  • sed 可以实现grep的大部分功能 ,但是不显示颜色

    1. # sed -n '/root/'p test.txt 或# sed -n '/1,5/'p test.txt

  • 单引号内可以说字符串也可以是数字,如果是数字的话则表示第几行,或者行数范围;
  • sed -n 是打印符合条件的行,p是print打印的意思
    六周第二次课 9.4/9.5 sed
    六周第二次课 9.4/9.5 sed
    六周第二次课 9.4/9.5 sed

    2. # sed -e '1'p -e '/bus/'p -n test.txt

  • 打印第一行和带有bus字符串的行
    六周第二次课 9.4/9.5 sed
    六周第二次课 9.4/9.5 sed

    3.# sed -n '/bus/'Ip test.txt

  • 可以匹配大小写,I不区分大小写
    六周第二次课 9.4/9.5 sed

sed 后面带d 删除指定的行

六周第二次课 9.4/9.5 sed

  • 例子 在日志非常大的情况下,如何删除工作日志 (删除前5个月的日志)
  • 用grep -n 确定多少行,匹配日期然后查看多少行

    sed '1,25'd test.txt

  • 列出指定范围内的行数 sed 'n'd仅仅是把行数在屏幕中显示出来,并没有删除
  • 同样这里的n 可以说数字 也可以说字符串 ‘/abc/’

六周第二次课 9.4/9.5 sed
六周第二次课 9.4/9.5 sed

sed -i '1,25'd test.txt

  • 删除指定范围内的行数

六周第二次课 9.4/9.5 sed

sed '1,10s/root/toor/g' test.txt

  • 把test文件的1到10行中的root替换成toor
    六周第二次课 9.4/9.5 sed

    sed -r '1,10s/ro+/r/g' test.txt ###sed -r 脱意

    六周第二次课 9.4/9.5 sed

  • sed -e 进行多次命令,和;效果一行
  • 正则中 | 表示或者,并且要sed两次表示

    sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 1.txt

  • 以:为分割符,将第一段和最后一段互相替换,([^:]+)表示非:前面的内容为1,(.*)表示一直到最后一个:前面的内容为2,([^:]+)表示非:后面面的内容为3
    六周第二次课 9.4/9.5 sed

    head test.txt |sed 's/[a-zA-Z]//g'

  • 删除所有的英文字母 其中“//”代表为空 (把字母替换为空)
    六周第二次课 9.4/9.5 sed

    head test.txt |sed -r 's/(.*)/aaa:&/'

  • 在所有的行前面加上指定的字符串
  • (.*)表示一整行 &表示 / 前面内容的意思
    六周第二次课 9.4/9.5 sed

猜你喜欢

转载自blog.51cto.com/13650048/2108377
sed