带你了解linux:学习第十一课 linux 之 awk
awk
是一种强大的文本处理工具,在 Linux 和 Unix 系统中广泛使用。它能够对文本文件进行模式扫描和处理,非常适合用来执行复杂的文本操作。
基本语法
awk
的基本语法如下:
awk [options] 'pattern-action' file(s)
或者
awk [options] program file(s)
- options:可选参数。
- pattern-action:模式和动作对,用单引号括起来。
- program:一系列模式和动作对,用大括号括起来。
- file(s):要处理的文件。
参数
-
-F fs 或 --field-separator fs: 设置字段分隔符为
fs
。例子:
echo "one:two:three" | awk -F: '{print $1, $3}'
输出
one three
,使用冒号作为字段分隔符。 -
-v var=value: 赋值给
awk
程序变量。例子:
echo "hello world" | awk -v var="Earth" 'BEGIN{print "Hello " var}'
输出
Hello Earth
,将变量var
设置为Earth
。 -
-f scriptfile 或 --file scriptfile: 从
scriptfile
读取awk
程序。例子:
# script.awk 内容如下: # {print $1} echo "one two three" | awk -f script.awk
输出
one
,从外部文件读取awk
程序。 -
-W compact: 使用紧凑模式,减少内存占用。
例子:
awk -W compact ...
用于处理大文件,减少内存使用。
-
-W help: 显示
gawk
的帮助信息。 -
-W version: 显示
gawk
的版本信息。 -
-W: 显示所有
gawk
的内置变量及其值。
模式和动作
-
模式: 可以是正则表达式,也可以是范围(如
3,5
表示行号3到5)。 -
动作: 在模式匹配时执行的一系列命令。
例子:
awk '/^pattern$/ {action}'
如果行匹配正则表达式 pattern
,则执行 action
。
内置变量
- NF:当前记录的字段总数。
- NR:当前处理的记录总数。
- FS:字段分隔符,默认为空格。
- RS:记录分隔符,默认为换行符。
- OFS:输出字段分隔符,默认与
FS
相同。 - ORS:输出记录分隔符,默认与
RS
相同。
例子
-
打印第二列:
echo "one two three" | awk '{print $2}'
输出
two
。 -
计算行数:
echo -e "one\ntwo\nthree" | awk '{print NR, $0}'
输出:
1 one 2 two 3 three
-
替换文本:
echo "I love apples" | awk '{gsub(/apple/, "orange"); print}'
输出
I love orange
。 -
使用字段分隔符:
echo "one,two,three" | awk -F, '{print $1, $3}'
输出
one three
。 -
计算列的总和:
echo -e "1 2 3\n4 5 6" | awk '{sum += $1 + $3; count++} END {print "Sum is", sum, "for", count, "lines"}'
输出:
Sum is 10 for 2 lines
-
条件语句:
echo -e "apple\nbanana\ncherry" | awk '{if ($1 ~ /b/) print}'
输出:
banana
awk
的功能非常强大,可以通过组合不同的模式、动作和内置变量来执行复杂的文本处理任务。这里只对awk的一些简单用法和使用做了举例,awk还有很多更灵活更强大的功能,等待你的发觉和探索
原文地址:https://blog.csdn.net/jianjiuhuang999/article/details/142753580
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!