请详细说明这条awk命令及指定命令的具体含义
详解一条典型awk命令的含义
我拿一个日常工作里常用的awk命令来拆解说明:awk 'BEGIN{FS=",";OFS="\t"} {if($3>100) print $1,$2,$3}' data.csv
整体作用
这条命令会读取data.csv文件,把以逗号分隔的每行数据中,第三列数值大于100的行,转换成制表符分隔格式后,输出该行的第一、二、三列内容。
逐部分拆解
BEGIN{FS=",";OFS="\t"}BEGIN是awk的特殊模式,代表在处理任何输入行之前先执行这里的代码,相当于初始化操作FS=",":设置**输入字段分隔符(Field Separator)**为逗号,告诉awk每行数据是用逗号分割成不同字段的OFS="\t":设置**输出字段分隔符(Output Field Separator)**为制表符,这样用print输出多个字段时,字段之间会自动用制表符隔开
{if($3>100) print $1,$2,$3}- 这是awk的主处理块,会对输入文件的每一行都执行一次
$3代表当前行的第三个字段(awk里字段从$1开始计数,$0代表整行内容)if($3>100):判断当前行的第三个字段数值是否大于100,只有满足条件才会执行后续的输出操作print $1,$2,$3:输出当前行的第一、二、三个字段,字段之间会用我们之前设置的OFS(制表符)分隔
data.csv- 这是awk要处理的输入文件路径,命令会读取这个文件的所有内容进行逐行处理
实际运行示例
假设data.csv的内容是:
Alice,Engineering,85
Bob,Marketing,120
Charlie,HR,90
执行这条awk命令后,输出结果会是:
Bob Marketing 120
因为只有Bob的第三列数值(120)大于100,且输出时自动用制表符分隔了三个字段。
内容的提问来源于stack exchange,提问作者hicham aboulainain
相关产品推荐
相关产品推荐

