awk的一些认识
awk
awk '{pattern + action}' {filenames}
当我们所指定的规则脚本过长的时候,我们可以使用-f的选项加上我们的脚本文件。再复杂点我们可以直接调用shell脚本,就像我们在编写python时需要加上解释器一样,我们调用#!/bin/awk这样也可以进行调用。
root@kali:~# awk 'NR==1{print}' testip.txt
192.168.114.1
root@kali:~# awk 'NR==4{print}' testip.txt
192.168.114.4
此处NR作为内置变量功能就是记录个数,也就是行数,那么我们可以利用NR显示具体行数内容。//FNR都是表示总的行数。
root@kali:~# awk 'BEGIN {print "The data3 File Contents:"}
{print}
END {print "End of File"}' testip.txt
The data3 File Contents:
192.168.114.1
192.168.114.2
192.168.114.3
192.168.114.4
192.168.114.5
BEGIN与END关键词。效果如上
root@kali:~# awk '$1 && NR==1 {print}' testip.txt
192.168.114.1
root@kali:~# awk '$2 && NR==1 {print}' testip.txt
$x显示的是具体列数,我们配合逻辑符号,可以进行筛选。我们可以看见,当我们想要查找第二列的时候返回的是空集,这里就说明了是不存在第二列的。//注意$0代表的是整个文本行
root@kali:~# awk '/^$/ {print "Blank line"}' testip.txt
Blank line
这里我们在文档中挖了几个空格,利用正则表达式将所有空白行全部都显示了出来。
root@kali:~# awk '!/3/ && /1/ {print}' testip.txt
192.168.114.1
192.168.114.2
192.168.114.5
192.168.114.6
192.168.114.7
192.168.114.8
192.168.114.9
192.168.114.10
同上我们仍然利用正则表达式选取出了不包含3,但是包含1的那些ip地址。
root@kali:~# awk 'NR==1 {print $1}' testip.txt
192.168.114.1
root@kali:~# awk -F "." 'NR==1 {print $1}' testip.txt
192
root@kali:~# awk -F "." 'NR==1 {print $2}' testip.txt
168
在此处我们可以看到之前我们没有加上-F参数,这样的就过就是分段分了一整段,但是我们利用-F参数指定.为分隔符号,此时我们可以看见自然而然地哪么此时就是以上结果了。
root@kali:~# awk 'BEGIN{system("ifconfig")}'
bridge0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.3.6 netmask 255.255.255.0 broadcast 192.168.3.255
ether 9e:df:30:34:30:af txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 234 (234.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.114.128 netmask 255.255.255.0 broadcast 192.168.114.255
inet6 fe80::20c:29ff:fe12:e944 prefixlen 64 scopeid 0x20
ether 00:0c:29:12:e9:44 txqueuelen 1000 (Ethernet)
RX packets 5244 bytes 1430889 (1.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 46 bytes 5063 (4.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 base 0x2000 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 9 bytes 475 (475.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9 bytes 475 (475.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我们可以利用awk调用系统命令,system函数,当然我们直接放到bash里面也可以进行。
root@kali:~# awk 'BEGIN{print "ifconfig"| "/bin/bash"}'
bridge0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.3.6 netmask 255.255.255.0 broadcast 192.168.3.255
ether 9e:df:30:34:30:af txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 234 (234.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.114.128 netmask 255.255.255.0 broadcast 192.168.114.255
inet6 fe80::20c:29ff:fe12:e944 prefixlen 64 scopeid 0x20
ether 00:0c:29:12:e9:44 txqueuelen 1000 (Ethernet)
RX packets 5486 bytes 1496859 (1.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 46 bytes 5063 (4.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 base 0x2000 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 9 bytes 475 (475.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9 bytes 475 (475.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$n 当前记录的第n个字段,字段间由FS分隔
$0 完整的输入记录
ARGC 命令行参数的数目
ARGIND 命令行中当前文件的位置(从0开始算)
ARGV 包含命令行参数的数组
CONVFMT 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
ERRNO 最后一个系统错误的描述
FIELDWIDTHS 字段宽度列表(用空格键分隔)
FILENAME 当前文件名
FNR 各文件分别计数的行号
FS 字段分隔符(默认是任何空格)
IGNORECASE 如果为真,则进行忽略大小写的匹配
NF 一条记录的字段的数目
NR 已经读出的记录数,就是行号,从1开始
OFMT 数字的输出格式(默认值是%.6g)
OFS 输出记录分隔符(输出换行符),输出时用指定的符号代替换行符
ORS 输出记录分隔符(默认值是一个换行符)
RLENGTH 由match函数所匹配的字符串的长度
RS 记录分隔符(默认是一个换行符)
RSTART 由match函数所匹配的字符串的第一个位置
SUBSEP 数组下标分隔符(默认值是/034)
awk的一些认识的更多相关文章
- awk命令简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- awk应用
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- shell——awk
awk -F"分隔符" "command" filename awk -F":" '{print $1}' /etc/passwd 字段引用 ...
- 【Linux】AWK入门
什么是AWK AWK是一种用于处理文本的编程语言工具,一个模式匹配程序.一个典型的示例是将数据转换成格式化的报告. 在命令行输入如下awk命令: awk -F":" '{ prin ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...
- sed awk grep三剑客常用
sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...
- awk命令速查
awk与sed.grep一样都是为了加工数据流而做成的文本加工过滤器命令.awk会事先把输入的数据根据字段单位进行分割.在没有制定分割单位的情况下,以输入数据中的空格或Tab为分隔符.与sed相比,它 ...
- Sed、Awk单行脚本快速参考
文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...
随机推荐
- SpringBoot集成Swagger2,3分钟轻松入手!
一.引入maven <dependency> <groupId>io.springfox</groupId> <artifactId>springfox ...
- A neural reinforcement learning model for tasks with unknown time delays
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 我们提出了一个基于生物学的神经模型,能够在复杂的任务中执行强化学习.该模型的独特之处在于,它能够在一个动作.状态转换和奖 ...
- Shell编程—数据展示
1.标准文件描述符 Linux用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一个非负整数,可以唯一标识会话中打开的文件.每个进程一次 多可以有九个文件描述符.出于特殊目 ...
- js数组Array根据动态条件过滤
数据 [{ "name": "张三", "score": 153 }, { "name": "李四" ...
- 为何要做seo关键词排名
http://www.wocaoseo.com/thread-229-1-1.html 武汉seo百度指数在150左右,做seo的同仁们都知道这样的一件事情. 真正搜索武汉seo关键词能作为潜在客户的 ...
- springboot-swagger配置
原文地址 https://www.cnblogs.com/softidea/p/6251249.html https://www.cnblogs.com/xiebq/p/9181517.html 1p ...
- linux下使用split命令分割文件且文件号从1开始
Linux里切割大文件的命令如下: split [OPTION] [INPUT [PREFIX]] 选项如下: -a : 指定后缀长度 -b : 每个文件多少字节 -d : 使用数字后缀而不是字母 - ...
- Cacti1.2.14最新版安装和配置(详细版)
Cacti的起源与发展现状 故事要从2001年的某一天说起.一个叫Ian Berry的中学生还在学习如何使用PHP和MySQL进行编程及功能的实现,那时候他业余时间为一个名不见经传的互联网运营商开发项 ...
- Linq 下的扩展方法太少了,您期待的 MoreLinq 来啦
一:背景 1. 讲故事 前几天看同事在用 linq 给内存中的两个 model 做左连接,用过的朋友都知道,你一定少不了一个叫做 DefaultIfEmpty 函数,这玩意吧,本来很流畅的 from. ...
- openshift搭建私有registry
1.创建registry服务器 (1)安装需要的包 yum -y install podman httpd-tools (2)创建registry目录 mkdir -p /opt/registry/{ ...