linux shell基础awk命令(编辑中)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell基础awk命令(编辑中)相关的知识,希望对你有一定的参考价值。

一、awk命令

   awk是一种**编程语言**,用于在linux/unix下对文本和数据进行处理(gawk - pattern scanning and processing language)。centos7中的awk是gawk的链接。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。前面的grep、sed只是单纯的工具,而awk已经是一门语言了,可见awk的功能将比较强大

         用法:
         awk [options] ‘script‘ var=value file(s)
   awk [options] -f scriptfile var=value file(s)

         选项:
   -F fs   fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
   -v var=value   赋值一个用户定义变量,将外部变量传递给awk
   -f scripfile  从脚本文件中读取awk命令

二、对文本竖列的操作

awk命令能够方便的通过指定分隔记号将文本分成特定的列,然后在针对分出来的竖列进行操作

1、显示test.txt文档的第一列前5行。

awk -F ‘:‘ ‘{print $1}‘ test.txt | head -n 5

命令解释:-F ‘:‘ 就是说这个文件以:作为分隔符,我们做实验的是passwd文件,它本身就被:分割成了7段,‘{}‘中就是操作的描述,命令中的print $1 就是显示第1列。

技术分享图片

2、显示test.txt文件所有竖列的内容

awk -F ‘:‘ ‘{print $0}‘ test.txt
awk ‘{print $0}‘ test.txt

注意与上一条命令的区别,$1表示第一列,$0表示所有列。
技术分享图片

效果上其实和cat一样。

3、awk也可以
awk命令在没有指定-F 分割符号或分割字符串时,默认以空格或者空白段作为分隔符

我们先创建一个测试文档,以空格作为分隔符
技术分享图片

后我们输入下列命令

awk ‘{print $1}‘
awk ‘{print $1,$3}‘
awk ‘{print $1,$2}‘

技术分享图片

可以看出awk自动把空格作为分段记号,不管是多少个空格。

4、指定#为显示分隔符显示特定列(注意不会影响原始文件,只是影响显示)

awk -F ‘:‘ ‘{print $1"#"$3"#"$7}‘ test.txt

技术分享图片

三、awk匹配功能举例

以上是关于linux shell基础awk命令(编辑中)的主要内容,如果未能解决你的问题,请参考以下文章

shell编程基础

[Linux Shell学习系列十四]sed和awk-5.awk基础

在 vim 编辑中使用 perl 单行命令

linux目录

Linux 文本处理利器--Awk常用命令

linux awk命令详解