gawk是GNU计划下的一个用于文本处理的工具,其语法类似于UNIX中的awk。下面是gawk的使用详解:
基本语法
gawk的基本语法格式如下:
```
'pattern { action }' file
```
其中,pattern是匹配模式,可以是正则表达式,也可以是字符串等;action是具体的操作,可以是打印、替换、统计等操作;file是需要处理的文件名。
如果需要对多个文件进行操作,可以使用通配符,如:
```
'pattern { action }' *.txt
```
内置变量
gawk提供了许多内置变量,常用的有:
$0:当前行的内容
$2、$3……:当前行的第1、2、3……个字段
NR:当前行的行号
NF:当前行的字段个数
FILENAME:当前文件的文件名
可以在action中使用这些内置变量,如:
```
'{ print "line " NR ": " $0 }' file.txt
```
模式匹配
gawk的模式匹配支持正则表达式、字符串等方式。
匹配正则表达式:
```
'/pattern/ { action }' file.txt
```
匹配字符串:
```
'$1 == "hello" { print $2 }' file.txt
```
操作和函数
gawk内置了很多操作和函数,包括打印、替换、字符串操作、数学函数等。以下是一些常用的操作和函数:
print:打印当前行或指定的内容,如:
```
'{ print $1 "\t" $2 }' file.txt
```
sub:替换指定的内容,如:
```
'{ sub(/old/, "new", $0); print $0 }' file.txt
```
gsub:替换全局匹配的内容
sprintf:格式化输出
```
'{ printf "%s\t%s\n", $1, $2 }' file.txt
```
length:返回字符串的长度
substr:返回子字符串
toupper、tolower:将字符串转换为大写或小写
sin、cos、atan等:数学函数
语句结构
gawk支持if、while、for、do-while、switch等语句结构。使用方式与C语言类似。
输出重定向
gawk支持将结果输出重定向到其他文件中,如:
```
'{ print $1 }' file.txt > output.txt
```
命令行参数
gawk支持从命令行读取参数,并在程序中使用。使用方式如下:
```
-v var=value '{ print var }' file.txt
```
其中,-v表示定义一个变量,var表示变量名,value表示变量值。
以上就是gawk的使用详解,希望对您有所帮助。