awk code

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

 

 

### AWK 使用教程与语法示例 AWK 是一种强大的文本处理工具,广泛用于 Linux/Unix 系统中的数据提取和报告生成。它支持模式扫描和处理功能,能够高效地完成复杂的文本分析任务。 #### 1. 基础结构 AWK 的基本结构由三部分组成:`pattern {action}`。如果没有指定 `pattern`,则默认匹配每一行并执行 `{action}` 中的操作[^2]。 ```bash awk '条件 {动作}' 输入文件 ``` #### 2. 字段分隔符设置 通过 `-F` 参数可以自定义输入字段的分隔符,默认为空格或制表符。如果需要修改输出字段分隔符,则可以通过 `OFS` 变量实现[^1]。 示例:将 `/etc/passwd` 文件按冒号分割,并打印用户名和 UID。 ```bash awk -F ':' '{print $1, $3}' /etc/passwd ``` #### 3. BEGIN 和 END 关键字 - **BEGIN**: 在读取任何输入之前执行的动作。 - **END**: 在所有输入被处理完毕之后执行的动作。 ##### 示例:统计文件总行数 ```bash awk 'BEGIN {count=0} {count++} END {print "Total lines:", count}' file.txt ``` #### 4. 条件过滤 可以根据正则表达式或其他逻辑条件筛选特定行的数据。 ##### 示例:仅显示以小写字母开头的行 ```bash awk '/^[a-z]/' input_file.txt ``` #### 5. 数值计算 AWK 支持简单的数值运算,适合用来做汇总、平均值等操作。 ##### 示例:求第二列数字之和 假设有一份日志文件 `data.log`,其中第三列为数值型数据: ```bash awk '{sum += $3} END {print "Sum of column 3 is", sum}' data.log ``` #### 6. 复杂脚本调试 对于较复杂的功能需求,可编写独立的 `.awk` 脚本文件并通过 `-f` 参数调用。 --- ### 综合案例 以下是一个综合使用的场景——解析访问日志并导出 CSV 格式的报表: 给定的日志格式如下: ``` IP Address Date Request Method Status Code Bytes Sent User Agent 192.168.1.1 Jan 1 GET 200 1024 Mozilla... 192.168.1.2 Jan 2 POST 404 512 Chrome... ``` 目标是将其转换成逗号分隔的形式存储到新文件中: ```bash awk 'BEGIN {OFS=","} {print $1, $2, $3, $4, $5, substr($0, index($0,$6))}' access_log > report.csv ``` 此命令会依次取出 IP 地址、日期、请求方式、状态码以及剩余部分作为用户代理信息保存下来。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值