shell编程:awk基础
语法格式:
一
awk
'BEGIN{}pattern{commands}END{}'
file_name
二
standard output | awk
'BEGIN{}pattern{commands}END{}'
基本格式
awk
'BEGIN{}pattern{commands}END{}'
BEGIN{} 文本处理前所做的处理
pattern{commands} 对文本具体的处理
END{} 文本处理后所做的处理
常用变量
最常用:
$0 整行
$1 首行
$ 末行
$NF 通常用于指定最后一个字段
FS 列分隔符(默认为空格)
RS 行分隔符(默认为换行)
NF 有多少列
实例
awk
'{print $0}'
passwd 输出整行内容
awk
'BEGIN{FS=":"}{print $1}'
passwd 输出所有行的第一个字段
awk
'{print NF}'
passwd 输出每一行的字段个数(多少列)
awk
'BEGIN{RS="--"}{print $0}'
list
RS 指定行分隔符: --
awk
'BEGIN{RS="--";FS="|"}{print $3}'
list
printf的用法
最常用
%s 字符串格式
%d 十进制格式
%f 浮点数格式
awk
'BEGIN{FS=":"}{printf "%s\n",$1}'
passwd 打印字符串,分隔符为":",打印后换行
awk
'BEGIN{FS=":"}{printf "%20s %20s\n",$1,$7}'
passwd 加入占位符美化,%20s表示占位20个字符
awk
'BEGIN{FS=":"}{printf "%-20s %-20s\n",$1,$7}'
passwd "-"表示左对齐
awk
'BEGIN{FS=":"}{printf "%0.2f\n",$3}'
passwd 打印浮点数,小数点后2位(默认小数点后4位)
awk的匹配模式
awk
'BEGIN{FS=":"}/root/{print $0}'
passwd
匹配passwd文件行中含有root字符串的所有行
awk
'/^nginx/{print $0}'
passwd
匹配passwd文件行中以nginx开头的所有行
运算符匹配
- < 小于
- > 大于
- <= 小于等于
- >= 大于等于
- == 等于
- != 不等于
- ~ 匹配正则表达式
- !~ 不匹配正则表达式
awk
'BEGIN{FS=":"}$3<50{print $0}'
passwd
以 : 为分隔符,匹配passwd文件中第3个字段小于50的所有行信息
awk
'BEGIN{FS=":"}$7=="/bin/bash"{print $0}'
passwd
以:为分隔符,匹配passwd文件中第7个字段为/bin/bash的所有行信息
awk
'BEGIN{FS=":"}$7!="/bin/bash"{print $0}'
passwd
以:为分隔符,匹配passwd文件中第7个字段不为/bin/bash的所有行信息
awk
'BEGIN{FS=":"}$3 ~ /[0-9]{3,}/{print $0}'
passwd
以:为分隔符,匹配passwd文件中第3个字段包含3个数字以上的所有行信息
布尔运算符匹配
- || 或
- && 与
- ! 非
awk
'BEGIN{FS=":"}$1=="ftp" || $1=="mail"{print $0}'
passwd
为分隔符,匹配/etc/passwd文件中包含ftp或mail的所有行信息
awk
'BEGIN{FS=":"}$3<50 && $4>50{print $0}'
passwd
以:为分隔符,匹配/etc/passwd文件中第3个字段小于50并且第4个字段大于50的所有行信息
awk
'BEGIN{FS=":"}/^nginx/{print $0}'
passwd
匹配包含 nginx开头 的行
awk
'BEGIN{FS=":"}$3==1{print $0}'
passwd
关系运算符,uid 等于1的行
awk
'BEGIN{FS=":"}$3~/[0-9]{3,}/{print $0}'
passwd
匹配uid(数字)为3位及以上的行
awk
'BEGIN{FS=":"}$0!~/\/sbin\/nologin/{print $0}'
passwd
匹配不包含/sbin/nologin 的行
awk
'BEGIN{FS=":"}$3<50 && $7~/\/bin\/bash/ {print $0}'
passwd
找出 uid 小于50,且bash为 /bin/bash 的行
语法格式
第一种形式: 基于文件
1
|
awk 'BEGIN{}pattern{commands}END{}' file_name |
第二种形式: 基于标准命令格式
1
|
standard output | awk 'BEGIN{}pattern{commands}END{}' |
shell编程:awk基础的更多相关文章
- shell编程awk基础介绍
awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理 读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行. awk里面的换行 ...
- Linux学习笔记(17) Shell编程之基础
1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...
- Shell编程菜鸟基础入门笔记
Shell编程基础入门 1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- shell编程awk进阶
awk操作符 算术操作符: x+y, x-y, x*y, x/y, x^y, x%y -x: 转换为负数 +x: 转换为数值 字符串操作符:没有符号的操作符,字符串连接 赋值操作 ...
- Shell编程——bash基础知识
# Bash中自动补全时忽略大小写 # 编辑~/.inputrc(没有的话,就新建一个),在最后加一行: set completion-ignore-case on # 若要用方向键Up,Down来搜 ...
- 第一部分shell编程1基础知识
ls etc/init.d/ shell脚本的路径 ls /usr/local/apache2/ ls /usr/local/apache2/bin/apachectl 1. shell特性命令历史 ...
- Linux Shell编程 awk命令
概述 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是l ...
- shell编程之基础
1.初探shell #!/bin/bash echo -e 'hello \nworld' 执行结果 echo 是打印输出字符,-e选项是开启转义功能 注意: 在windows下编写的shell脚本直 ...
- Shell编程-控制结构 | 基础篇
if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if- ...
随机推荐
- 【推荐系统】知乎live入门2.细节补充
参考链接 [推荐系统]知乎live入门 目录 1. 综述 2. 召回 3. 用户画像与标签 4. 特征工程 5. 点击率预估 6. 评估 7. 数据标注 8. 推荐 ================= ...
- 剑指offer学习读书笔记--二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都是按照从上到下递增的顺序排序.请设计一个函数,输入这样的一个二维数组和一个整数,判断数组是否含有这个整数. 1 2 8 9 2 4 9 1 ...
- java 回调的原理与实现
回调函数,顾名思义,用于回调的函数.回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数.回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机. 回调原本应该是一个非常简 ...
- 04.Linux-CentOS系统sudo权限配置
visudo权限配置普通用户的使用权限范围配置文件: (请根据自己公司需求配置) [root@localhost ~]# visudo ## Allow root to run any command ...
- Less 混合(mixin)
Less的混合:混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性.我们还可以带参数地调用,就像使用函数一样. .bord ...
- AtCoder Beginner Contest 137
前言 又是卡在了T4 , 总分 100 + 200 + 300 = 600pts rank 2449.以后还是要多积累比赛经验. A 输出a+b,a-b,a*b中最大的数,还要多简单?不挂代码了 B ...
- java并发学习--第一章 线程的创建
所谓的并发就是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行.所以我们看似几个线程在同时进行,其实在操作系统中 ...
- MySQL数据库的自动备份与数据库被破坏后的恢复(2)
测试自动备份正常运转与否(备份恢复的方法) 这里,以通过实际操作的过程来介绍问题出现后的恢复方法. [1] 当数据库被删除后的恢复方法 首先建立一个测试用的数据库. [root@CentOS ~]# ...
- 神仙dcx出的一道题
题目大意 \(\;\;\)在一个坐标系上, 以\((0, 0)\)为起点, 每走一步,可以从\((x,y)\)走到\((x+1,y),(x-1,y),(x,y+1),(x,y-1)\)中的一个点上, ...
- 01-跨域-jsonp原理
jsonp能跨域,并不是因为它发送了ajax请求,而是利用动态创建的script标签. script标签没有收到浏览器同源策略的限制,是可以跨域访问的. 创建的script标签,把其src指向请求的服 ...