• awk命令应用


    记录:353

    场景:在CentOS 7.9操作系统上,使用awk文本处理工具处理文本;使用awk、cat和grep搭配使用处理文本;使用awk直接处理文本;使用shell脚本调用awk脚本处理文本。

    版本:

    操作系统:CentOS 7.9

    名词:

    awk:一个优良的文本处理工具,Linux及Unix环境中功能最强大的数据处理引擎之一。

    awk: 一种编程语言,用于在 linux/unix 下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。

    1.命令应用

    1.1awk处理第1个文本(默认空格分割)

    (1)命令

    命令:cat /home/work/aintro.txt | grep -vE "#|^$"| awk '{print $1,$2,$3,$4}'

    (2)解析

    使用cat命令读取文件内容。

    使用grep命令匹配内容,grep -vE "#|^$",是表示匹配不是以#号开头的字符串。-v,是反向匹配;-E是扩展正则表达式;"#|^$",正则表达式是匹配以#号开头的字符串;"#"是以#号开头的字符串,"^"是匹配字符串开头,"$"是匹配字符串结尾。'{print $1,$2,$3,$4}'中的两个单引号是引用代码块。print是输出。

    使用awk逐行处理文本,默认使用空格分割字符串。"$1,$2,$3,$4"中$1是代表取分割后第1个字符,$2是取分割后第2个字符,逐级类推。如果是$0就打印出整行内容。

    (3)文本内容和文本处理结果

    1.2awk处理第2个文本(-F指定分割符号)

    (1)命令

    命令:cat /home/work/bintro.txt | grep -vE "#|^$"| awk -F":" '{print $1,$2,$3,$4}'

    命令:cat /home/work/bintro.txt | grep -vE "#|^$"| awk -F: '{print $1,$2,$3,$4}'

    (2)解析

    使用cat命令读取文件内容。

    使用grep命令匹配内容。

    使用awk逐行处理文本,-F":"或-F:,指定文本的分割符号为":"号。

    (3)文本内容和文本处理结果

    1.3awk处理第3个文本

    (1)命令

    命令:awk -F":" '{print $1,$2,$3,$4}'  /home/work/cintro.txt

    命令:awk -F: '{print $1,$2,$3,$4}'  /home/work/cintro.txt

    (2)解析

    使用awk逐行处理文本,-F":"或-F:,指定文本的分割符号为":"号。

    (3)文本内容和文本处理结果

    1.4awk处理第4个文本

    (1)命令

    命令:awk -F: '{print $1,$2,$3,$4}' /home/work/dintro.txt >>/home/work/dintro-result.txt

    (2)解析

    使用awk逐行处理文本,-F:,指定文本的分割符号为":"号。处理/home/work/dintro.txt文件内容;结果输出到/home/work/dintro-result.txt文件。

    (3)文本内容和文本处理结果

    1.5awk处理第5个文本

    (1)命令

    命令:awk -f /home/work/process.awk /home/work/eintro.txt >>/home/work/eintro-result.txt

    (2)解析

    使用awk逐行处理文本,-F:,指定文本的分割符号为":"号。

    -f /home/work/process.awk,-f指定使用process.awk文件的脚本。

    处理/home/work/eintro.txt文件内容;结果输出到/home/work/eintro-result.txt文件。

    (3)文本内容和文本处理结果

    1.6awk处理第6个文本

    (1)命令

    执行shell命令:/home/work/process.sh

    (2)解析

    脚本调用逻辑:

    执行shell脚本/home/work/process.sh;

    shell脚本调用/home/work/process.awk脚本;

    awk -f处理/home/work/fintro.txt文件内容;

    >>将处理结果输出到/home/work/fintro-result.txt文件。

    (3)文本内容和文本处理结果

    图片版:

    文字版:

    1. //1. fintro.txt文本
    2. Zhejiang:is:a:province:in:China.
    3. Hangzhou:is:a:city:in:Zj.
    4. Xihu:is:a:district:in:Hz.
    5. //2. process.awk脚本
    6. BEGIN{
    7. FS=":"
    8. }
    9. {print $1,$2,$3,$4}
    10. // 3. process.sh脚本
    11. #!/bin/bash
    12. SRC_FILE=/home/work/fintro.txt
    13. RESULT_FILE=/home/work/fintro-result.txt
    14. AWK_SCRIPT_FILE=/home/work/process.awk
    15. awk -f $AWK_SCRIPT_FILE $SRC_FILE >> $RESULT_FILE
    16. // 4. fintro-result.txt处理结果文本
    17. Zhejiang is a province
    18. Hangzhou is a city
    19. Xihu is a district

    2.命令帮助手册

    命令:awk --help

    解析:查看awk支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。

    1. Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
    2. Usage: awk [POSIX or GNU style options] [--] 'program' file ...
    3. POSIX options: GNU long options: (standard)
    4. -f progfile --file=progfile
    5. -F fs --field-separator=fs
    6. -v var=val --assign=var=val
    7. Short options: GNU long options: (extensions)
    8. -b --characters-as-bytes
    9. -c --traditional
    10. -C --copyright
    11. -d[file] --dump-variables[=file]
    12. -e 'program-text' --source='program-text'
    13. -E file --exec=file
    14. -g --gen-pot
    15. -h --help
    16. -L [fatal] --lint[=fatal]
    17. -n --non-decimal-data
    18. -N --use-lc-numeric
    19. -O --optimize
    20. -p[file] --profile[=file]
    21. -P --posix
    22. -r --re-interval
    23. -S --sandbox
    24. -t --lint-old
    25. -V --version
    26. To report bugs, see node `Bugs' in `gawk.info', which is
    27. section `Reporting Problems and Bugs' in the printed version.
    28. gawk is a pattern scanning and processing language.
    29. By default it reads standard input and writes standard output.
    30. Examples:
    31. gawk '{ sum += $1 }; END { print sum }' file
    32. gawk -F: '{ print $1 }' /etc/passwd

    以上,感谢。

    2022年11月29日

  • 相关阅读:
    JVM学习总结(一)
    名词从句的练习题
    【Django】一些DRF的学习记录
    京东获得店铺的所有商品 API 说明文档
    磁盘怎么分区?3 款最佳免费磁盘分区软件
    Java基础数组-选择排序算法
    Arrays.fill(dp, Integer.MAX_VALUE)
    Comfyui|AnimateDiff生成动画基础使用方法
    赶紧进来!!!干货满满!!C语言操作符详细讲解(下)
    【前端】JavaScript-PC端网页特效
  • 原文地址:https://blog.csdn.net/zhangbeizhen18/article/details/128103663