shell脚本详解(十一)——awk文本和数据处理编程语言
shell脚本详解(十一)——awk文本和数据处理编程语言
- 一、awk命令 – 文本和数据进行处理的编程语言
- 1、工作原理
- 2、命令格式
- 3、awk常见的内建变量(可直接使用)
- 4、按行输出文本
- 5、按字段输出文本
- 6、通过管道、双引号调用 Shell 命令
- 7、getline
- 二、简单例题:提取本机IP地址,并进行二进制的转换输出
- 方法一:
- 方法二(函数+可交互版)
一、awk命令 – 文本和数据进行处理的编程语言
- awk命令是一种编程语言,用于在linux/unix下对文本和数据进行处理。
- 而且它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。
1、工作原理
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。
2、命令格式
3、awk常见的内建变量(可直接使用)
内建变量 | 说明 |
---|---|
FS | 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同 |
NF | 当前处理的行的字段个数 |
NR | 当前处理的行的行号(序数) |
$0 | 当前处理的行的整行内容 |
$n | 当前处理行的第n个字段(第n列) |
FILENAME | 被处理的文件名 |
RS | 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’ |
4、按行输出文本
- BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;awk再处理指定的文本,之后再执行END模式中指定的动作,END{}语句块中,往往会放入打印结果等语句。
5、按字段输出文本
6、通过管道、双引号调用 Shell 命令
7、getline
- 当getline左右无重定向符“<”或“|”时,getline作用于当前文件,读入当前文件的第一行给其后跟的变量var或$0;应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
- 当getline左右有重定向符“<”或“|”时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
二、简单例题:提取本机IP地址,并进行二进制的转换输出
方法一:
#获取IP
ifconfig | awk '(NR==2) {print $2}'#分字段操作
ifconfig |awk '(NR==2) {print $2}' | awk 'BEGIN {RS="."} ; {print} ' #对分段后的IP地址赋值给一个变量
x=`ifconfig |awk '(NR==2) {print $2}' | awk 'BEGIN {RS="."} ; {print} '`#进行外层循环,四次
for a in $x
do#进行内循环,选用减法进行循环,如果外层循环的值比被减数大,则取余数,并输出1;反之则输出0,且不取减法结果。 for ((i=1;i<=255;i+=$i))dom=$[128/$i]sum=$[$a-$m]if [ $a -ge $m ]thena=$[$a-$m]echo -n "1" #不换行输出elseecho -n "0" #不换行输出fidoneecho " " #进行系统默认的空格换行操作
done > 123.txt#进行结果的输出,并把结果中的空格全部替换成 "."号 IP="`cat 123.txt`"
echo $IP | sed 's/ /./g'
方法二(函数+可交互版)
#!/bin/bash
#定义一个函数,使用位置变量来进行操作
ip(){
x=`echo $1 | awk 'BEGIN {RS="."} ; {print} '`
for a in $x
do#进行内循环,选用减法进行循环,如果外层循环的值比被减数大,则取余数,并输出1;反之则输出0,且不取减法结果。for ((i=1;i<=255;i+=$i))dom=$[128/$i]sum=$[$a-$m]if [ $a -ge $m ]thena=$[$a-$m]echo -n "1" elseecho -n "0" fidoneecho -e "\t"
done
}##############################read -p "请输入想要转换的IP地址:" p #定义交互式变量P
list="`ip $p`" #把调用函数后得出的结果放入列表中
echo $list | sed 's/ /./g' #输出列表,并对分隔符进行替换
shell脚本详解(十一)——awk文本和数据处理编程语言相关推荐
- shell脚本详解(十)——sed编辑器的使用方法
shell脚本详解(十)--sed编辑器的使用方法 一.sed编辑器 二.sed编辑器工作流程 1.读取: 2.执行: 3.显示: 4.注: 三.命令格式 四.常用选项 五.常用操作 六.使用地址 s ...
- shell脚本详解(七)——正则表达式、sort、uniq、tr
shell脚本详解(七)--正则表达式.sort.uniq.tr 一.排序命令--sort 1.格式 2.常用选项 3.示例 二.去除重复行操作命令--uniq 1.格式 2.常用选项 3.示例 三. ...
- shell脚本详解(一)——初学shell脚本必看哦
shell脚本详解 一.Shell脚本概述 1.1.shell脚本的概念 1.2.shell脚本应用场景 1.3.shell脚本能干什么 1.4. shell的作用--命令翻译器,"翻译官& ...
- shell脚本详解(十二)——Here Document免交互及Expect自动化交互
shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...
- shell脚本详解(九)——一键部署DNS正向解析
shell脚本详解(九)--一键部署DNS正向解析 一.DNS正向解析 二.shell脚本一键部署 一.DNS正向解析 详情请点击:DNS正向解析 二.shell脚本一键部署 #!/bin/bash ...
- shell脚本详解(六)——数组简介和排序算法
shell脚本详解(六)--数组简介和排序算法 一.数组 1.数组的定义方法 ①.方式一: ②.方式二: ③.方式三: ④.方式四: 2.数组包括的数据类型 3.获取数组长度 4.获取数据列表 5.读 ...
- shell脚本详解(四)——循环语句之while循环和until循环(附加例题及解析)
shell脚本详解(四)--循环语句之while循环和until循环 一.until循环 1.循环结构 2.例题 二.while循环 1.循环结构 2.例题(每个人的思路不同,会导致脚本内容不一样,这 ...
- shell脚本详解(三)——循环语句之for循环
shell脚本详解(三)--循环语句之for循环 一.echo命令 – 输出字符串或提取Shell变量的值 1.格式 2.常用参数 3.示例 二.for循环语句 1.for循环结构 2.例题 ①.例题 ...
- shell脚本详解(二)——条件测试、if语句和case分支语句
shell脚本详解(二)--条件测试.if语句和case分支语句 一.条件测试 1.test命令 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二.if条件语句 1.单分支 2.双分支 ...
最新文章
- python argv 详解_对python中的argv和argc使用详解
- linux下杀死进程(kill)的N种方法
- linux修改文件没有备份,归档模式,恢复没有备份的数据文件
- SQL Tuning Advisor使用实例
- 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
- c语言简易计算器大作业报告,简易计算器 (C语言)作业
- mhdd测试hdd硬盘软件,硬盘检测工具(HDDScan)
- Ubuntu 使用 xdg-open 命令
- Python批量删除docx文档中所有页眉和页脚
- C语言(一):C语言概述介绍
- tailscale自建derper服务器中转,使用自定义端口
- 互联网公司那些价值观-阿里巴巴
- 微信小程序开发01 双线程模型:为什么小程序不用浏览器的线程模型?
- 简单粗暴理解与实现机器学习之K-近邻算法(三):距离度量、欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化距离、余弦距离、汉明距离、杰卡德距离、马氏距离
- Springboot毕设项目企业财务管理系统lmm93java+VUE+Mybatis+Maven+Mysql+sprnig)
- Gradle学习之Android-DSL AppExtension篇
- FluentData
- android 查看设备 x86,有了它 x86安卓设备就能用Windows软件了
- 1 0.99999的悖论_宇宙年龄只有138亿年,宽度却有930亿光年,这是悖论吗?
- mysql禁止空密码登录_PhpMyadmin空密码登录被禁止登录问题解决办法
热门文章
- 20210813 数据摆渡、DNS、分布式、分布式数据库、防ddos攻击、链路负载均衡
- 微信小程序 漂亮的按钮 多颜色+动画效果,超好看的button 样式
- Mac小技巧:如何在当前目录快速打开终端iTerm2并定位至当前目录
- 一句话讲解深度学习算法
- 搞定mysql的 行转列(7种方法) 和 列转行
- X里、X迅、X团、X度、X手的面试总结
- XP系统自动修复命令(sfc)详解
- 计算机辅助项目管理课程方案,project计算机辅助项目管理课程报告-20210323010453.docx-原创力文档...
- MWC 2019|5G时代促进多产业融合 折叠手机令人瞩目
- js面试题 高频 含答案