是什么 ? | : | the GNU implementation of awk |
开发语言 | : | C |
开发组织 | : | GNU |
官方主页 | : | http://www.gnu.org/software/gawk |
操作系统 | 包管理器 | 安装命令 |
---|---|---|
Windows | scoop | scoop install gawk |
Windows | Chocolatey | choco install -y gawk |
macOS | HomeBrew | brew install gawk |
GNU/Linux | HomeBrew | brew install gawk |
apt | sudo apt-get install -y gawk | |
CentOS | yum | sudo yum install -y gawk |
dnf | sudo dnf install -y gawk | |
openSUSE | zypper | sudo zypper install -y gawk |
Alpine Linux | apk | sudo apk add gawk |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge gawk |
awk
命令的使用格式:
awk [-F CHAR | -v var=value] 'awkProgramString' <FILE>...
awk [-F CHAR | -v var=value] -f awkProgramFile <FILE>...
你可以把awk
命令看作是类似于python、ruby、perl、node等脚本解释器。脚本
可以以字符串
直接传给解释器
,也可以把脚本
写在文件
中,以文件
的形式传给解释器
。
打印出awk
命令的使用帮助。
此选项是gawk
自己扩展的,不符合POSIX
标准。
打印出awk
命令的版本信息。
此选项是gawk
自己扩展的,不符合POSIX
标准。
awkProgramString
最好被单引号包裹,如果使用双引号,里面的很多字符需要做转义
。
示例:
echo "a b c\nd e f" | awk '{print $1}'
解释:这里是调用了awk的内置函数print打印出每行中按照空格分割开之后的第一个field
的内容。
运行效果如下:
对于简单的需求,我们可以直接把awkProgramString
写在命令行里, 但是如果特别复杂的需求,直接写在命令行里就不方便了,所以,你也可以像其他语言一样, 把这些语句写到一个文件中,然后使用-f awkProgramFile
参数指定awk源文件路径即可。
awk源文件的后缀名一般为.awk
。
示例:
awk -f program.awk yy.txt
F
是Field Seperator
的首字母。意思为Field
的分隔符。
awk
命令是逐行处理文件的。把每一行按照-F
参数指定的字符进行分割,分割出的每一块就是一个Field
。
如果没有指定-F
参数,awk
默认以空格
作为分隔符。
示例:
echo "a/b/c\nd/e/f" | awk -F/ '{print $1}'
运行效果如下:
打印出分割后的第二个分割字符串。
v
是variable
的首字母。
-v
参数用于定义变量
。
-v
参数可以出现多次。
示例:
echo "a/b/c\nd/e/f" | awk -v FS=/ '{print $1}'
echo "a/b/c\nd/e/f" | awk 'BEGIN{FS="/"} {print $1}'
实际上。-F
参数本质上就是定义了FS
变量。