【SHELL】awk 命令用法
linux 命令行查询 awk 用法信息
awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options: GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-D[file] --debug[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-i includefile --include=includefile
-l library --load=library
-L[fatal|invalid|no-ext] --lint[=fatal|invalid|no-ext]
-M --bignum
-N --use-lc-numeric
-n --non-decimal-data
-o[file] --pretty-print[=file]
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-s --no-optimize
-S --sandbox
-t --lint-old
-V --version
详细解释 awk 命令行选项:
POSIX 或 GNU 样式选项:
-
-f progfile/--file=progfile:
从文件progfile中读取awk程序。这种方式适合当脚本太复杂不便于直接写在命令行时。示例:
-
-F fs/--field-separator=fs:
指定输入文件中的字段分隔符,默认是空白字符。可以使用其他字符作为分隔符,比如逗号、冒号等。示例:
-
-v var=val/--assign=var=val:
在awk执行前为变量var赋值val,可以用于在脚本中传递外部参数。示例:
GNU 扩展选项:
-
-b/--characters-as-bytes:
按字节处理字符,适合处理非UTF-8的字符编码。 -
-c/--traditional:
启用传统awk模式,禁用某些GNU扩展特性。 -
-C/--copyright:
打印版权信息。 -
-d[file]/--dump-variables[=file]:
将所有awk程序中的变量和它们的值转储到file中,默认输出到标准输出。 -
-D[file]/--debug[=file]:
启用调试模式,输出调试信息到指定文件或默认输出。 -
-e 'program-text'/--source='program-text':
在命令行上直接提供awk脚本。适用于简单的awk处理。示例:
-
-E file/--exec=file:
从文件中读取并执行awk程序,功能类似-f。 -
-g/--gen-pot:
生成.pot文件,用于国际化。 -
-h/--help:
显示帮助信息并退出。 -
-i includefile/--include=includefile:
在awk脚本中包含另一个文件includefile,这有助于组织较大的awk程序。 -
-l library/--load=library:
加载动态库library,为awk脚本提供额外功能。 -
-L[fatal|invalid|no-ext]/--lint[=fatal|invalid|no-ext]:
检查程序是否符合标准规范,如果不符合会输出警告或错误。 -
-M/--bignum:
支持大数计算。 -
-N/--use-lc-numeric:
使用当前语言环境的数字格式。 -
-n/--non-decimal-data:
允许处理非十进制数据。 -
-o[file]/--pretty-print[=file]:
美化输出,并可选择将其输出到文件。 -
-O/--optimize:
优化awk脚本的性能。 -
-p[file]/--profile[=file]:
启用性能分析,并输出性能报告到指定文件。 -
-P/--posix:
只启用 POSIX 标准的awk特性,禁用所有 GNU 扩展。 -
-r/--re-interval:
启用正则表达式的区间语法(如{min,max})。 -
-s/--no-optimize:
禁用优化。 -
-S/--sandbox:
启用沙盒模式,限制程序操作系统命令(如system()和getline等)。 -
-t/--lint-old:
使用旧式lint警告来检查代码。 -
-V/--version:
显示版本信息并退出。
awk 的常见用法与示例:
-
打印文件中的第一列:
-
指定分隔符(逗号分隔):
-
匹配模式并打印符合条件的行:
打印包含单词 "error" 的行:
-
过滤并计算字段值:
计算文件中第三列大于100的行数:
-
使用变量传递外部参数:
打印大于指定阈值的行,阈值从命令行传入:
-
统计文件中的非空行数:
-
范围匹配:
打印从包含 "start" 到包含 "end" 的所有行:
-
修改文件内容(就地编辑):
将文件中所有 "foo" 替换为 "bar" 并保存修改:
总结:
awk 是一个功能强大的文本处理工具,它可以帮助你处理结构化或半结构化的数据。使用 awk,可以轻松地从文本中提取信息,进行数据筛选、统计和分析。
计算文件两个字符串之间的非空行数(包括这两个字符串所占行数)
awk 'NF' $file| wc -l 使用该命令统计文件 added projects 到 changed projects 之间的非空行数
解释:
-
/added projects/,/changed projects/:
这是一个范围模式,表示从匹配added projects的行开始,到匹配changed projects的行结束。 -
if (NF):NF是awk的内置变量,表示当前行的字段数。只要NF > 0,即当前行不是空行,就会执行后面的操作。这样可以过滤掉空行。 -
count++:
如果当前行非空,计数器count自增 1。 -
END { print count }:
当处理完所有行后,END块会输出统计的非空行数。
更多见:awk命令_Linux awk 命令用法详解:文本和数据进行处理的编程语言

浙公网安备 33010602011771号