awk的基本使用
awk 是一种文本处理工具,常用于对文件的行、列进行操作和筛选,以下是 awk 常用参数及其对应的例子:
-F: 指定分隔符
例如,假设我们有一个以逗号分隔的文件 example.csv,要按照逗号将每行数据拆分为多个字段,可以使用如下命令:
awk -F ',' '{print $1, $2}' example.csv
这个命令表示使用 , 作为分隔符,从文件 example.csv 中读取每行数据,并打印第一列和第二列。
NR: 行数计数器
例如,假设我们有一个文件 example.txt,要输出该文件的前 5 行,可以使用如下命令:
awk 'NR <= 5 {print}' example.txt
这个命令表示读取文件 example.txt 的每一行,当行数不大于 5 时,打印该行内容。
NF: 字段数计数器
例如,假设我们有一个以制表符分隔的文件 example.tsv,要找出其中字段数最多的行,并输出该行的内容和字段数,可以使用如下命令:
awk -F '\t' '{if (NF > max_nf) {max_nf = NF; max_line = $0}} END {print max_line, max_nf}' example.tsv
这个命令表示使用制表符作为分隔符,遍历文件 example.tsv 中的每一行,记录字段数最多的行和对应的字段数,最后输出记录下来的最多字段数的行和对应的字段数。
$0: 当前行内容
例如,假设我们有一个文件 example.txt,要将其中所有行转换为大写并输出,可以使用如下命令:
awk '{print toupper($0)}' example.txt
这个命令表示将文件 example.txt 中的每一行都转换成大写,并打印出来。
BEGIN 和 END: 在处理文件前和处理文件后执行的命令
例如,假设我们有一个文件 example.txt,要在其中输出所有行的和,可以使用如下命令:
awk 'BEGIN {sum = 0} {sum += $1} END {print sum}' example.txt
这个命令表示在处理文件前初始化变量 sum 为 0,在处理每一行时将该行的第一列加入到 sum 中,最后在处理文件结束时输出 sum。