zoukankan      html  css  js  c++  java
  • sed和awk的参数总结

    (一)、关于sed的使用
    sed是一种对它的输入的每一行进行一系列操作的流式编辑器,sed被用来作为过滤器
    语句结构:sed ‘script’ files
    【参数举例】
     1、-n, --quiet, --silent
                     取消自动打印模式空间,只打印匹配行,用-n时一般要用p。
     2、-p,打印匹配行【注只用-p时文件所有内容都打印出来,但是匹配行打印两次】
    3、-d 删除所对应的行
         sed '1,5d' test 删除test文件的第1到5行
         sed '9,$d' test 删除test文件的第9行到最后一行。$代表文件的最后一行。
    4、-s,用于字符串的替换
         sed -n  's/bc/ggggggg/gp' test
    5、-y,用于字符的变换
       sed 'y/被变换的字符序列/变换的字符序列/' 文件
       深入分析:sed 'y/bc/BC/' test  被变换的字符序列和变换的字符序列长度必须相同,这是和s的区别。/pattern1/s/pattern2/pattern3/ :1~3都是正则表达式,匹配规则pattern1的每一行中
    的pattern2被替换为pattern3。s命令提供了&操作,使得在pattern3中可以重复使用匹配字
    符串pattern2。
       sed -n '/hello/s/go/good/p' test 将含有hello行所在行的go替换为good
       sed -n '/hello/s/go/good/2p' test 将含有hello行所在行的第二个go替换为good
       sed -n '/hello/s/go/good/gp' test 将含有hello行所在行的所有的go替换为good
       sed -n '/hello/s/go/&od/gp' test  &表示为已经替代的go,本句意思为将含有hello
    行所在行的所有的go替换为good
       sed '2,5c No 2-5 number' test  test文件中的第2到5行用o 2-5 number替代
    6、-i 编辑原文件(此选项慎用,如果使用则原文件就会被修改,无法恢复)。
      插入的用法:
      • 在文件file的第2行之前插入“xxx”    sed '2i xxx' file
      • 在file的第2行之后插入“xxx”    sed '2a xxx' file
       file的第2行和第3行之前插入“xxx”   sed '2,3i xxx' file
       在file的第2行至最后一行之前插入“xxx”   sed '2,$i xxx' file
       总结:在指定行之前插入使用的是“i”,而在指定行之后插入是使用“a”。

    (二)、关于awk的使用总结
    awk是一种程序语言,用来处理数据和产生报告。
    1、关于NR(在工作job)中的记录数
        awk '{if(NR%3)print $1 ; }' test  输出文件test中不是3的倍数的行的第一列
       awk '{print $1 "\t"$3}' test 输出文件test的每一行的第一列和第三列中间用8字节隔开
       awk '{printf "%s\t%s\n",$1,$3}' 也可以用printf对文件进行输出,作用如上
    2、FS  输入字段分隔符
       awk -F":" '{print $3}' /etc/passwd 以冒号为分割符取出每一行的第三列
       awk '{FS=":"} $3 < 10 {print $1 "\t " $3}' 以冒号为分割符,当第三列
       的值小于10的情况下,打印出该行的第一和第三列
    3、awk的内部变量
       FILENAME当前输入文件的名称
       NR当前输入文件的总行数
       统计空行在文件中的百分比
       if [ -f $1 ];then
       awk ‘/^$/{file=FILENAME;x=x+1;next;}
     END {printf “%s %s
    %3.1f\n”,file,x,(100*(x/NR))}’          $1
     else  echo “ERROR”
     fi
       NF当前行($0)记录中的字段数
       OFS输出字段的分隔符
       FS输入字段的分隔符
    改变FS的默认值 awk ‘BEGIN {FS=“:”;} {print $1,$6;}’/etc/passwd 
    或 awk –F: ‘{print $1,$6;}’ /etc/passwd
  • 相关阅读:
    数学是最好的语言
    人类的语言--自然语言--》逻辑语言
    为什么大脑喜欢看图?
    思考是调用大脑存储的上下文对输入信息进行处理的过程
    Redis的相关问题总结
    TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)
    array_column 函数, 以及在PHP5.5之下的替代方法
    thinkphp在app接口开发过程中的通讯安全认证
    PHP开发APP接口实现--基本篇
    分布式与集群的区别是什么?
  • 原文地址:https://www.cnblogs.com/linuxer/p/2870533.html
Copyright © 2011-2022 走看看