shell三剑客


shell三剑客

一、Sed命令

1.Introduce

  1. sed是一种流编辑器,它一次处理一行内容;
  2. 处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;
  3. 接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出;

2.基本语法

  1. 语法格式:sed [options] '{command}[flags] [filename]
  2. options
    • -e:表示用指定命令或者脚本来处理输入的文本文件;
    • -f scriptfile:表示用指定的脚本文件来处理输入的文件文件;
    • -n:抑制自动输出,仅表示处理后的结果;
    • -i:直接编辑文本文件;
  3. 内部命令:
    • a:增加,在当前行下面增加一行指定内容;
    • c:替换,将选定行替换为指定内容;
    • d:删除,删除选定的行;
    • i:插入,在选定行上面插入一行指定内容;
    • p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容,如果又非打印字符,则以ASCLL码输出。通常与“-n”选项一起使用;
    • s:替换,替换指定字符;
    • y:字符转换;
  4. 标志:
    • 数字:新文本替换的模式;
    • g:用新文本替换现有文本的全部实例;
    • w filename:将替换的结果写入文件;

实操案例

  1. 在指定行下面追加内容:

    要求:在文本第二到四行每行后新开一行追加数据:damn!
    命令:sed '2,4a\damn!' sed.txt
    Attention:若不加数字则代表对所有行进行操作;

  2. 在匹配字符串的行下/上面追加内容:

    要求:找到包含"3 the"的行,在其后/前新开一行追加内容:damn!
    命令:sed '/3 the/a\damn!' sed.txt

        `sed '/3 the/i\damn!' sed.txt`
    
  3. 在指定行进行部分内容替换:

    要求:将文本中第二到第四行的第一个dog替换为cat;
    命令:sed '2,4s/dog/cat/' sed.txt
    Attention
    ①如果要将指定行的所有匹配字符进行替换,需改成:sed '2,4s/dog/cat/g' sed.txt
    *②如果要将指定行的第二个匹配字符进行替换,需改成:sed '2,4s/dog/cat/2' sed.txt

  4. 在匹配字符串的行进行部分内容替换:

    要求:将包含字符串”3 the”的行中的dog替换为cat;
    命令:sed '/3 the/s/dog/cat/ sed.txt
    Attention:同上;

  5. 在指定行进行全部内容替换:

    要求:将文本的第二到四行更改为:damn!
    命令:sed '2,4c\damn!' sed.txt
    Attention:这里是将三行全部内容替换成一行damn!

  6. 在匹配字符串的行进行全部内容替换:

    要求:将文件中包含”3 the”的行内容更改为: damn!
    命令:sed '/3 the/c\damn!' sed.txt
    Attention:这里是将每一个匹配的行分别替换成一行damn!

  7. 将行中匹配的内容进行对应替换:

    要求:将文本中所有的a b c字符替换成A B C
    命令:sed 'y/abc/ABC/' sed.txt
    Attention:这里会将一行中所有的匹配的字符全部进行转换;

  8. 删除指定行:

    要求:删除文件2到4行
    命令:sed '2,4d' sed.txt

  9. 打印文件指定行:

    要求:打印文件第2到4行/打印文件包含3 the的行
    命令:sed -n '2,4p' sed.txt
    命令:sed -n '/3 the/p' sed.txt
    Attention:如果不加-n则会将文本中所有内容都打印一遍;

  10. 在命令行中使用多个命令:

    要求:将brown替换为greendog替换为cat
    命令:sed -e 's/brown/green/;s/dog/cat/' sed.txt
    Attention:若要一次使用某个文件中的全部命令,也可以使用sed -f commands.txt sed.txt

  11. 修改源文件:

    要求:将源文件的brown替换为greendog替换为cat
    命令:sed -i.bak 's/brown/green/;s/dog/cat/' sed.txt
    Attention:在修改源文件的同时会先备份一个以.bak结尾的源文件,然后再进行修改操作;

  12. 将修改的内容存入其他文件:

    要求:将源文件的cat替换为dog,并存入文件new.txt
    命令:sed 's/cat/dog/w new.txt' sed.txt

二、grep命令

1.introcude

  1. 文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行;

    2.基本语法

  2. 语法格式:grep -option(参数) 'word'(关键词) file(文件)

3.实操案例

  1. 搜索包含指定字符的行:

    要求:从文件中搜索包含"L"字符的行
    命令:grep "L" gerp.txt
    Attention
    ①搜索以i开头的行(不区分大小写):grep "i" grep.txt -i -n -o
    -i表示不区分大小;-n表示输出前加上行号;-o表示只输出匹配字符,且每个字符单独成行

  2. 显示符合条件的行之前(后)的内容:

    要求:从文件中搜索包含"L"字符的行,并显示其之前(后)的2行
    命令:grep "L" grep.txt -B(A)2
    Attentiongrep "L" grep.txt -C2可以显示其前后2行

  3. 只统计符合条件的行数:

    要求:从文件中统计包含teacher的行数
    命令:grep 'teacher' grep.txt -c


文章作者: yangyang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yangyang !
  目录