• linux命令三剑客:awk,grep,sed


    1.awk

    (1)针对文件进行读取过滤:

      打印出每一行:awk '{print $0}'   test.txt              ------------$0表示一整行,$1表示通过空格分割后的第一个元素 ,$2 为第二个元素

      通过 -F 指定分割符: awk -F ':'  '{print $1}'  test.txt           ----------标识每一行用:分割成的元素,打印第一个

    (2)处理管道中的内容:

      获取当前目录列表的某列元素: ls | awk '{print $1}'

      增加正则过滤,或者条件过滤: cat test.txt | awk {if {$1>0} print $1}       

                    cat test.txt |awk '{/a*a/  print $1 }' 

    2.grep

    (1)grep  ' aaa'  test.txt     过滤出包含有aaa的行

    (2)cat test.txt  |grep 'g*'    过滤出包含g开头的行

    3.sed  

      sed命令的选项(option):

      -n :只打印模式匹配的行

      -e :直接在命令行模式上进行sed动作编辑,此为默认选项

      -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作

      -r :支持扩展表达式

      -i :直接修改文件内容

      动作说明:

    • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

     注:如果没有加上 -i 是没有实际的修改文件内容的

      未修改源文件:sed '2a  123456' test.txt   

      修改了源文件:sed -i  '2a  123456' test.txt   --在第二行后边加了一行   123456

    对文件的的增删改查:

    (1)增加  a,i

      sed -i  '2a  123456' test.txt   --在第2行的后面加1行 

      sed -i  '1,3a  123456' test.txt     --在1,2,3行后边各增加1行

           sed -i   '1i 123456' test.txt   --在第1行的前面加1行 

    (2)删除  d

      sed -i   '2d'  test.txt   --删除第二行

      sed -i  '1,3d ' test.txt   --删除1,2,3行

    (3)更改  c,s

      sed -i '2c 123456' test.txt   --把第二行替换成123456

      sed -i '1,2c 123456' test.txt      --把1,2行替换成一行  123456

      

      sed 's/old/new/' test.txt          --默认替换每一行的第一个old,换成new

      sed 's/old/new/gi' test.txt  --匹配所有old替换为new代表一行多个,代表匹配忽略大小写

      sed '3,9s/old/new/gi' test.txt   --替换3到9行的所有old,换成new,区分大小写

     (4)查询、打印

      sed -n '1,3p' test.txt    --打印1-3行

      sed -n '/222/p'  test.txt   --打印正则匹配到222的行

      sed -n '/222/!p'  test.txt   --打印正则没有匹配到的行

      

    (5)执行多条命令-e,执行文件中的命令-f

      sed -e 's/系统/00/g' -e '2d' test.txt

       sed -f ab.log test.txt

    鸡肉是我的最爱!
  • 相关阅读:
    Linux Shell tr 命令详解
    Shell统计每个单词出现的个数
    启明4-29团队进度博客
    启明4-28团队进度博客
    启明4-27团队进度博客
    启明4-26团队进度博客
    启明4-25团队进度博客
    启明4-24团队博客
    每日总结8
    启明4-23团队进度博客
  • 原文地址:https://www.cnblogs.com/laochiji/p/13037652.html
Copyright © 2020-2023  润新知