继续学习awk高级用法
- 多个分隔符
awk默认以空格或Tab作为字段分隔符,但是有时候我们需要使用多个分隔符来切割文本。可以使用-F参数指定多个分隔符,例如:
awk -F '[,;]' '{print $1,$2,$3}' file.txt
上面的命令将文本文件file.txt以逗号或分号作为分隔符,输出第1、2、3列。
- 自定义输出分隔符
awk默认使用空格作为输出分隔符,但可以使用OFS变量自定义输出分隔符。例如:
awk 'BEGIN{OFS=","} {print $1,$2,$3}' file.txt
上面的命令将文本文件file.txt以逗号作为输出分隔符,输出第1、2、3列。
- 内置函数
awk内置了很多函数,例如substr用于截取字符串,length用于获取字符串长度,tolower用于将字符串转换为小写等。例如:
awk '{print substr($1,1,3),length($2),tolower($3)}' file.txt
上面的命令将文本文件file.txt输出第1列前3个字符、第2列长度、第3列转换为小写后的结果。
- 正则表达式匹配
awk可以使用正则表达式匹配文本,例如:
awk '/pattern/{print $1,$2}' file.txt
上面的命令将文本文件file.txt匹配包含pattern的行,输出第1、2列。
- 处理文件
awk可以处理多个文件,例如:
awk '{print $1}' file1.txt file2.txt
上面的命令将同时处理file1.txt和file2.txt,输出每个文件的第1列。
- 数组
awk支持数组,可以使用数组存储数据。例如:
awk '{a[$1]+=$2} END{for(i in a){print i,a[i]}}' file.txt
上面的命令将文本文件file.txt以第1列为下标,第2列为值存储到数组a中,最后输出数组a的每个元素。
- 控制语句
awk支持控制语句,例如if、while、for等。可以使用控制语句处理复杂的文本数据。例如:
awk '{if($3>50){print $1,$2}}' file.txt
上面的命令将文本文件file.txt判断第3列是否大于50,输出第1、2列。
- 自定义函数
awk支持自定义函数,可以使用函数处理文本数据。例如:
awk 'function add(a,b){return a+b} {print add($1,$2)}' file.txt
上面的命令将文本文件file.txt定义一个函数add用于计算两个数的和,然后输出每行的和。
以上是awk高级用法的一些例子,可以根据实际情况灵活运用。
原文地址: https://www.cveoy.top/t/topic/bzOw 著作权归作者所有。请勿转载和采集!