awk是一个强大的文本分析工具,其本质上是一个数据驱动式的脚本语言,用于处理文本,并对文本进行诸如生成报告等各种操作。这是一个强大的Linux命令行程序,用于处理和分析文本文件,特别是那些对文本格式有严格要求或者表格化的文件。
awk命令在大多数Linux版本中都可使用。对于某些可能没有预装该命令的Linux发行版,可通过以下的安装命令进行安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install gawk
[linux@bashcommandnotfound.cn ~]$ sudo yum install gawk
[linux@bashcommandnotfound.cn ~]$ sudo dnf install gawk
awk命令的基本语法如下:
awk [options] 'script' var=value file
此处options是命令选项,'script’表示awk程序,var=value设定awk程序中的变量,而file则为输入的文件名称。
awk命令的常用选项:
选项 | 解释 |
---|---|
-f file | 从文件file中读取awk脚本 |
-F fs | 设置输入字段分隔符,等同于BEGIN{FS=“fs”} |
-v var=value | 设置变量 |
-m[fr] mf | 设置字符串最大数目 |
这个例子基本没什么用,但它是一个很好的awk
语法介绍。
[linux@bashcommandnotfound.cn ~]$ awk '{ print }' file
我们可以使用awk
命令来打印文本的特定字段2。
[linux@bashcommandnotfound.cn ~]$ awk '{ print $1 }' file
这个例子展示了如何使用awk
命令来打印一个文件的行数。
[linux@bashcommandnotfound.cn ~]$ awk 'END { print NR }' file
这个例子展示了如何使用-F
选项来指定输入字段的分隔符。
[linux@bashcommandnotfound.cn ~]$ awk -F: '{ print $1 }' /etc/passwd
这个例子展示了如何在一个awk
命令中使用多个命令。
[linux@bashcommandnotfound.cn ~]$ awk '/pattern1/ { action1 } /pattern2/ { action2 }' file
这个例子展示了如何在awk
命令中使用变量。
[linux@bashcommandnotfound.cn ~]$ awk -v var=value 'BEGIN { print var }'
这个例子展示了如何在awk
命令中使用内建变量。
[linux@bashcommandnotfound.cn ~]$ awk '{ print NR, $0 }' file
这个例子展示了如何在awk
命令中使用条件语句。
[linux@bashcommandnotfound.cn ~]$ awk '{ if ($1 > max) max = $1 } END { print max }' file
这个例子展示了如何在awk
命令中使用循环语句。
[linux@bashcommandnotfound.cn ~]$ awk 'BEGIN { for (i = 1; i <= 5; i++) print i }'
这个例子展示了如何在awk
命令中使用函数。
[linux@bashcommandnotfound.cn ~]$ awk '{ print length($0) }' file
这个例子展示了如何在awk
命令中使用数组。
[linux@bashcommandnotfound.cn ~]$ awk '{ arr[$1]++ } END { for (i in arr) print i, arr[i] }' file
这个例子展示了如何在awk
命令中使用正则表达式。
[linux@bashcommandnotfound.cn ~]$ awk '/pattern/ { print $0 }' file
这个例子展示了如何在awk
命令中使用BEGIN和END块。
[linux@bashcommandnotfound.cn ~]$ awk 'BEGIN { print "Start" } { print $0 } END { print "End" }' file
这个例子展示了如何在awk
命令中使用内建函数。
[linux@bashcommandnotfound.cn ~]$ awk '{ print substr($0, 1, 5) }' file
这个例子展示了如何在awk
命令中处理多个文件。
[linux@bashcommandnotfound.cn ~]$ awk '{ print FILENAME, $0 }' file1 file2
sed命令 - sed命令也是一种处理文本文件的命令,比如插入、删除、替换文本中的字符串等。
grep命令 - grep命令用于在文本文件中搜索包含指定规则的行,然后返回结果。
sort命令 - sort命令用于排序文本文件中的行。
cut命令 - cut命令用于从文件的每行剪切字节、字符和字段并将这些字节、字符和字段输出。
paste命令 - paste命令用于合并文件的行。
join命令 - join命令用于在一行中将两个文件的字段结合起来。
uniq命令 - uniq命令用于在排序的文件中报告或省略重复行。
cat命令 - cat命令用于串联和打印文件。
touch命令 - touch命令用于修改文件或目录的时间戳,如果文件不存在,会创建一个新的空文件。
grep命令 - grep命令用于在文本中搜索匹配的字符模式。
更多详细内容可以参考:
linux入门学习教程 - Linux入门自学网
Linux awk命令详解:一种对文本文件进行分析、过滤、转换的处理工具