什么是Awk?
Awk是一种文本处理工具,它的名字是由其三位创始人(Aho、Weinberger和Kernighan)的姓氏首字母组成的。Awk的设计初衷是用于处理结构化文本数据,它提供了强大的模式匹配和数据提取功能。
Awk的工作方式是逐行扫描输入文本文件,并对每一行应用一组用户定义的规则。这些规则由模式-动作对构成,当文本行匹配某个模式时,对应的动作将被执行。Awk将输入文本自动分割成字段(默认以空格作为分隔符),可以方便地对字段进行操作和处理。
Awk的基本用法
Awk命令的一般格式如下:
awk 'pattern { action }' input_file
以下是一些Awk语法的常见要点:
Awk的实际应用示例
awk '{ count++ } END { print count }' input.txt
awk -F ',' '{ sum += $3 } END { print sum }' data
awk '/Jun 15 10:30:00/, /Jun 15 11:00:00/' access.log
awk '{ for(i=1; i<=NF; i++) count[$i]++ } END { for(word in count) print word, count[word] }' text.txt
awk '/[0-9]+/' input.txt
awk -F ',' '{ print "Line", NR, "has", NF, "fields" }' data.csv
awk '{ print "File:", FILENAME, "Line:", NR, $0 }' file1.txt file2.txt
awk '{ if ($1 > 10) print $1, "is greater than 10"; else print $1, "is less than or equal to 10" }' data.txt
awk 'BEGIN { for(i=1; i<=9; i++) { for(j=1; j<=i; j++) printf("%d*%d=%d ", j, i, i*j); print "" } }'
awk '{ print "Line", NR, "has", length($0), "characters" }' data.txt
awk -F ',' '{ print "Name:", $1, "Initials:", substr($1, 1, 1) substr($2, 1, 1) }' names.csv
awk '{ name = $1; age = $2; print "Name:", name, "Age:", age }' data.txt
awk '{ printf "Name: %-10s Age: %2d\n", $1, $2 }' data.txt
今天的分享就到这里啦