关闭

强悍的 linux —— sed 与 awk

350人阅读 评论(0) 收藏 举报
分类:

可不可以狭隘的理解为,Linux 的学习,就是命令行的学习,而命令行的学习就是命令参数的学习,丰富而强悍的参数,正是命令的精髓所在。

1. sed(stream editor)

  • sed -n

    sed 命令中 p 能实现打印匹配行的功能。我们可以实际看下 sed 命令带 -n 和不带 -n 情况下有什么不同。

    编写如下的简单脚本程序 test.sh:

    !/bin/sh
    tr "a-z" "A-Z"
    exit 0
    • sed -n 1p test.sh

      !/bin/sh

      仅打印第一匹配行。打印前两行:

      sed -n 1,2p test.sh
  • sed 1p test.sh

    !/bin/sh
    !/bin/sh
    tr "a-z" "A-Z"
    exit 0

    不仅打印第一匹配行,还输出全部sh内容;

  • 查找时忽略大小写

    
    # cat a.txt
    
    aa
    AA
    bba
    cc

    参数做如下设置:

    $ sed -n '/a/Ip' a.txt
    aa
    AA
    bba
    
    // d 参数表删除
    $ sed -e '/a/Id' a.txt
    cc

2. awk

linux awk命令详解

awk是一个强大的文本分析工具,相对于 grep 的查找,sed 的编辑,awk 在其对数据分析并生成报告时,显得尤为强大。

awk工作流程是这样的:读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符(默认域分隔符是”空白键” 或 “[tab]键”,使用 -F field-sepeartor 指定其他的域分隔符)划分域,填充域:

  • $0则表示所有域
  • $1表示第一个域
  • $n表示第 n 个域。
$ last -n 5 | awk  '{print $1}'
$ cat /etc/passwd | awk -F ':' '{print $1"\t"$7}'
    # /etc/passwd 的分隔符为冒号;
$ cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2090823次
    • 积分:57920
    • 等级:
    • 排名:第48名
    • 原创:3931篇
    • 转载:38篇
    • 译文:1篇
    • 评论:139条
    博客专栏
    文章分类
    我的微博
    最新评论