linux三剑客:grep,awk,sed。
1. grep命令
2. awk命令
linux中的awk命令是一种处理文本的工具。AWK命名来源于三位创始人的家族名称首字母。可以分行对文本进行处理。
其命令格式如下:
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
命令可以分为有三个主要要素:
- script,脚本。可以通过单引号括起来,也可以放置在文件中通过-f参数指明文件。
- var。
- file(s),表示作用的对象文件。
2.1 测试举例:
Dec 23 15:10:01.591144 leaf-229 WARNING logrotate: message repeated 4 times: [ nss_tacplus: no tacacs server in config for nss_tacplus]
Dec 23 15:10:01.661657 leaf-229 INFO liblogging-stdlog: [origin software="rsyslogd" swVersion="8.24.0" x-pid="1249" x-info="http://www.rsyslog.com"] rsyslogd was
Dec 23 07:10:58.237137 leaf-229 ERR snmp#snmp-subagent message repeated 13 times: [ [ax_interface] ERROR: MIBUpdater.start() caught an unexpected exception during update_data()#012Traceback (most recent call last):#012 File "/usr/local/lib/python3.6/dist-packages/ax_interface/mib.py", line 43, in start#012 self.update_data()#012 File "/usr/local/lib/python3.6/dist-packages/sonic_ax_impl/mibs/ietf/rfc4363.py", line 73, in update_data#012 bridge_port_id = ent[b"SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID"][6:]#012KeyError: b'SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID']
Dec 23 15:11:00.806932 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6
Dec 23 15:11:00.807179 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6
Dec 23 15:11:00.811136 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6
Dec 23 15:11:00.811340 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6
Dec 23 15:11:00.812690 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6
Dec 23 15:11:00.812890 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6
Dec 23 15:11:04.241797 leaf-229 ERR snmp#snmp-subagent [ax_interface] ERROR: MIBUpdater.start() caught an unexpected exception during update_data()#012Traceback (most recent call last):#012 File "/usr/local/lib/python3.6/dist-packages/ax_interface/mib.py", line 43, in start#012 self.update_data()#012 File "/usr/local/lib/python3.6/dist-packages/sonic_ax_impl/mibs/ietf/rfc4363.py", line 73, in update_data#012 bridge_port_id = ent[b"SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID"][6:]#012KeyError: b'SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID'
Dec 23 07:29:37.399508 leaf-229 ERR snmp#snmp-subagent message repeated 3 times: [ [ax_interface] ERROR: MIBUpdater.start() caught an unexpected exception during update_data()#012Traceback (most recent call last):#012 File "/usr/local/lib/python3.6/dist-packages/ax_interface/mib.py", line 43, in start#012 self.update_data()#012 File "/usr/local/lib/python3.6/dist-packages/sonic_ax_impl/mibs/ietf/rfc4363.py", line 73, in update_data#012 bridge_port_id = ent[b"SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID"][6:]#012KeyError: b'SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID']
- 获取每行的日期信息:
dean@dean-OptiPlex-7050:pcap$ awk '{print $3}' syslog 15:10:01.591144 15:10:01.661657 07:10:58.237137 15:11:00.806932 15:11:00.807179 15:11:00.811136 15:11:00.811340 15:11:00.812690 15:11:00.812890 15:11:04.241797 07:29:37.399508
- 过滤15点10分之后的日志,输出这个日志的行号和日志的完整内容
dean@dean-OptiPlex-7050:pcap$ awk -F "[: ]" '$3>10&&$4>10 {print}' syslog Dec 23 15:11:00.806932 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6 Dec 23 15:11:00.807179 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6 Dec 23 15:11:00.811136 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6 Dec 23 15:11:00.811340 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6 Dec 23 15:11:00.812690 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6 Dec 23 15:11:00.812890 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6 Dec 23 15:11:04.241797 leaf-229 ERR snmp#snmp-subagent [ax_interface] ERROR: MIBUpdater.start() caught an unexpected exception during update_data()#012Traceback (most recent call last):#012 File "/usr/local/lib/python3.6/dist-packages/ax_interface/mib.py", line 43, in start#012 self.update_data()#012 File "/usr/local/lib/python3.6/dist-packages/sonic_ax_impl/mibs/ietf/rfc4363.py", line 73, in update_data#012 bridge_port_id = ent[b"SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID"][6:]#012KeyError: b'SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID'
1. 首先,使用了两个分隔符冒号(":")和空格(" ")。也就是说遇到冒号或者空格都会分割。
2. 单引号内的内容先是进行判断,然后后面的双括号表示执行的操作。进行了判断,当第三个字段大于10,且第四个字段大于10。进行了逻辑与。
3. 在awk中$0表示整行。$1...分别表示第n个字符。当判断成功的时候则输出。
4. 注意,在比较的时候注意字符串这些的区别,当比较字符串的时候需要用双引号括起来。比如说$8=="still" 双引号不能丢。 -
匹配里面含有IP的行(不区分大小写)。
dean@dean-OptiPlex-7050:pcap$ awk 'BEGIN{IGNORECASE=1} $0 ~/ip/ {print}' syslog Dec 23 15:11:00.806932 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6 Dec 23 15:11:00.807179 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6 Dec 23 15:11:00.811136 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6 Dec 23 15:11:00.811340 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6 Dec 23 15:11:00.812690 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid mgmt IP 10.250.0.226,2000::6 Dec 23 15:11:00.812890 leaf-229 WARNING snmp#snmp-subagent [sonic_ax_impl] WARNING: Invalid management IP 10.250.0.226,2000::6
1. 在awk中可以使用正则表达式来匹配。匹配操作符为~,正则表达式至于两个斜杠之间。
2. 之前有一个BEGIN表示在每行操作之前进行的操作,将IGNORECASE这个字段置位为1,表示不区分大小写。 -
3. sed命令
4. 其余命令:
- last 可以用于查看最近登录情况。