• shell脚本--cut命令与awk简单使用


    cut:对内容进行列切割

      -d 后面的是分割符,表示用什么符号来分割符来分割列,分隔符使用引号括起来;

      -f后面跟着要选择的字段列,从1开始,表示第一列,如果要多列,可以用逗号分隔 ;

      -c参数后面跟着要选择的字符偏移,-b表示后面跟着要选择的字节偏移;

      可以使用start-end表示一个区间,解决使用逗号的烦恼。

    比如这个实例:

    ubuntu@ubuntu:~$ cat test.txt
    aaaaa;bbbbb;ccccc
    ddddddd;eeeeee
    fffff;gggggggg!iii;jjjjjj;kkkk
    ubuntu@ubuntu:~$ cut -f 2,3 -d ";" test.txt #注意分隔符使用引号括起来
    bbbbb;ccccc
    eeeeee
    gggggggg!iii;jjjjjj
    ubuntu@ubuntu:~$ #上一条命令的作用是选择以;分隔之后的第2和第3字段
    

      

    使用-表示区间

    ubuntu@ubuntu:~$ cat test.txt
    aaaaa"bbbbb"ccccc
    ddddddd"eeeeee
    fffff"gggggggg!iii"jjjjjj"kkkk
    ubuntu@ubuntu:~$ cut -f 1-2 -d '"' test.txt
    aaaaa"bbbbb
    ddddddd"eeeeee
    fffff"gggggggg!iii
    ubuntu@ubuntu:~$ cut -d '"' -c 1-3 test.txt
    cut: an input delimiter may be specified only when operating on fields
    Try 'cut --help' for more information.
    ubuntu@ubuntu:~$ 
    

      注意:-d只能和-f一起配合使用,-c不能和-d一起使用,只能单独使用。想一想就很容易明白嘛,-d表示指定分隔符,而-c表示指定区间的字符,不需要分割。

    awk:循环迭代对每一行进行操作

      awk用来处理文本和数据,功能很强大,如果是一些简单的操作,可以使用cut命令来实现

      -F 后面加上分隔符 ,建议空格分开后,使用引号将分隔符括起来,不加-F时,默认是以空格分隔。$0表示整行数据,$1表示第1个字段

    ubuntu@ubuntu:~$ cat test.txt
    aaaaa"bbbbb"ccccc
    ddddddd"eeeeee
    fffff"gggggggg!iii"jjjjjj"kkkk
    ubuntu@ubuntu:~$ cat test.txt | awk -F '"' '{print $1"=>"$2}'
    aaaaa=>bbbbb
    ddddddd=>eeeeee
    fffff=>gggggggg!iii
    

      awk特别强大,这里提一点点,可以参考http://man.linuxde.net/awk

  • 相关阅读:
    HTTP的传输编码(Transfer-Encoding:chunked)
    单向链表寻找入环点算法的证明
    Java容器解析系列(17) LruCache详解
    Java容器解析系列(16) android内存优化之SparseArray
    Java容器解析系列(15) HashTable Dictionary & Properties
    Java容器解析系列(14) IdentityHashMap详解
    Swift开发之iOS11下UIToolBar非正常显示问题
    Python爬虫之Scrapy框架爬取XXXFM音频文件
    ARKit文档翻译之ARTrackable协议
    ARKit文档翻译之ARAnchor类
  • 原文地址:https://www.cnblogs.com/-beyond/p/8330281.html
Copyright © 2020-2023  润新知