网站首页 > 基础教程 正文
1. 简介
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
类似于sql: awk=select field from table
之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
awk脚本通常由以下3部分构成:
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句}
2. 基本用法
awk [选项参数] 'script' var=value file(s)
awk [选项参数] -f scriptfile var=value file(s)
2.1 处理指定文件的内容
awk 'condition { action }' filename
2.2 处理某个命令的执行结果
command | awk ' condition { action }'
3. 变量
3.1 FS(字段分隔符)
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:
# $0 表示当前整行内容,$1,$2 表示第一个字段,第二个字段
# 默认以空格作为分隔符 输出第一个字段
echo "aa bb cc dd ee ff" | awk '{print $1}'
# 以丨作为
echo "aa bb l cc dd l ee ff" | awk -F 'l' '{print $1}'
echo "aa bb cc : dd ee ff" | awk -F ':' '{print $1}'
3.2 NF(当前行的字段个数)
$NF就代表最后一个字段,$(NF-1)代表倒数第二个字段
#以空格为分隔符打印最后一个字段
echo "aa bb cc dd" | awk '{ print $NF}'
#以空格为分隔符打印倒数第二个字段
echo "aa bb cc dd" | awk '{ print $(NF-1)}'
#以|为分隔符 打印倒数第二个字段
echo "aa bb cc dd" | awk -F '|' '{ print $(NF-1)}'
3.3 NR (当前处理的是第几行)
cat test.txt | awk '{print NR")", $0}'
3.4 FILENAME(当前文件名)
awk '{print FILENAME, NR")", $0}' test.txt
3.5 其他变量
- RS:行分隔符,用于分割每一行,默认是换行符。
- OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
- ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
- OFMT:数字输出的格式,默认为%.6g。
4. 函数
4.1 print 和 printf
用于打印输出的函数
4.2 常用函数
- substr():返回子字符串。
- substr($1,2):返回第一个字段,从第2个字符开始一直到结束。
- substr($1,2,3):返回第一个字段,从第2个字符开始开始后的3个字符。
- sin():正弦。
- cos():余弦。
- sqrt():平方根。
- rand():随机数。
- toupper():字符转为大写。
- tolower():字符转为小写。
5 正则表达式
# 查找包含root的行
cat test.txt | awk '/root/ {print $0}'
#查找包含user和orange的行
cat test.txt | awk '/usr\/orange/ {print $0}'
猜你喜欢
- 2025-04-01 awk命令详解(awk命令详解. FNR=NR)
- 2025-04-01 shell——awk命令(shell awk split)
- 2025-04-01 快速学习awk编程(一)(awk程序)
- 2025-04-01 每天一个Linux命令-(1)-awk(linux每天执行一次)
- 2025-04-01 Linux必学技能 | 17个案例带运维小白快速精通Awk命令,拿来即用
- 2025-04-01 Linux环境中的awk命令使用技巧(linux awk命令使用实例)
- 2025-04-01 Linux系统基础指令(四)——awk命令
- 2025-04-01 这些awk用法你会用几个(awk for in)
- 2025-04-01 12、linux命令-awk(linux 命令 awk)
- 2025-04-01 awk命令使用实例(awk中使用shell命令)
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)