Linux中Shell脚本--awk的用法

语法格式:awk [选项] ‘指令’ 操作文件

常用选项:-F 指定分隔符,分隔符用""引起来

-v:var=value在awk程序开始之前指定一个值valu给变量var,这些变量值用于awk程序的BEGIN快

-f:后面跟一个保存了awk程序的文件,代替在命令行指定awk程序

实例1:在命令行直接输入awk指令

awk '{print}' 1.txt  #逐行读取文件1.txt内容并打印

img

awk '{print $0}' 1.txt #逐行读取文件内容,并打印该行,$0保存的是当前行的内容

img

awk '{print "hello"}' 1.txt  #逐行读取1.txt文件内容,
每行结束后打印一个hello,文件1.txt有多少行就打印多少个hello

img

awk '{print $1}'  1.txt  #打印1.txt的第一列内容,在不指定分割符的情况下,
awk默认使用空白做分割符

img

awk  -F ":" '{print $1}' /etc/passwd   #以":"为分隔符打印/etc/passwd文件的第一例内容

img

实例2:将awk指令写入文件,通过-f选项调用

vim awkscriptBEGIN {FS=":"}{print $1}
awk -f awkscript /etc/passwd #通过调用awk指令文件来执行awk命令

img

实例3:awk的BEGIN块和END块

BEGIN用于初始化FS变量(列分隔符),打印标题,或者初始化后需要在程序中调用的全局变量

END用于执行最后的运算或者打印最终的输出结果

END块和BEGIN不是必须的

实例4:在awk中使用正则匹配,正则表达式必须要放在//中

awk '/123/{print}'  1.txt  #打印1.txt中匹配123的那一行内容

img

awk -F ":"  '/123/{print $2}' 1.txt  
#以":"为分隔符打印1.txt中匹配123的那一行中,第二列的内容

img

awk -F ":" '$1 ~ /root/{print $2}'  /etc/passwd 
#打印/etc/passwd中,第一列匹配root的行其第二列的内容 ~表示匹配

img

实例5:awk的表达式和块

awk提供了多个比较操作符:"==" ">" "<" "<=" ">=" "!="  "~"匹配  "!~"不匹配
awk 'BEGIN{ FS=":"} $1 == "root" {print $3}'  /etc/passwd 
#以":"为分隔符,打印/etc/passwd中第一列是root的行其第3列的内容

img

实例6:awk中的条件语句

awk 'BEGIN {FS=":"} {if ($1 ~ "root") {print $2}}'  /etc/passwd 
# 以":"为分隔符,打印/etc/passwd文件中第一列匹配root的行,其第二列的内容

img

awk 'BEGIN {FS=":"} ($1 ~ "linux" || $2 ~ "Network") {print $3}'  1.txt 
# 以":"为分隔符,打印1.txt文件中,第一列匹配linux或者第二列匹配Network的行,其第三列的内容

img

在awk中NF变量记录的是当前行中有多少列(默认是空格为分割符)

awk '/ock/{print NF}' 1.txt # 统计匹配ock的行有多少列

img

awk 'NF == 3 {print}'  1.txt  
#打印1.txt中有3列的行的内容,示例中,第二行有三列,所以打印的就是第二行的内容

img

$NF记录的是当前行最后一列的内容(如果每一行有多列内容)

awk '{if (NR > 3) {print $NF} }' 1.txt    
# 输出1.txt中行号大于3的行,其最后一列的内容 

img

NR记录的是当前行的行号

awk '{if (NR > 3) {print NR".\t"$0} }' 1.txt  
#格式化输入1.txt中行号大于3的行的行号和内容

img

awk 'BEGIN { x=0 } /^$/{x=x+1} END{print "find" " " x " " "blank lines"}'  1.txt  
#统计1.txt中有多少空行

img

awk 'BEGIN { x=0 } /^$/{x=x+1} END{print "find" " " x " " "blank lines"}'  1.txt  
#统计1.txt中有多少空行

img

awk脚本示例1:

功能:打印1.txt文本中每一列的内容

\#!/bin/bash
num=`wc 1.txt | awk '{print $2}'`   # 统计1.txt文件有多少列
for i in `seq 1 $num`            # 根据文件列数进行循环
doawk -v a=$i  '{print $a}' 1.txt     # 打印每一列的内容,-v 参数可以指定一个变量保存外部变量的值,将外部变量传递给awk
done

img

img

示例2:

使用awk查看当前系统中的TCP连接状态和对应状态的连接数

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

#使用netstat -n 查看网络连接,/^tcp/匹配以tcp开头的连接,将其匹配行的最后一列内容(即TCP的连接状态)作为下标生成数组T[],++T[$NF]表示每匹配一次,将该下标的元素值加1,左后在END 中遍历数组,输出对应TCP连接状态的值

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rh php70 php fpm,mac 通过brew安装php70 +php-fpm+ phalcon3.0.3

安装php7.0.15brew install homebrew/php/php70brew install homebrew/php/php70-mcryptbrew install homebrew/php/php70-redisbrew install homebrew/php/php70-msgpackbrew install homebrew/php/php70-memcached安装php后可执行文件所在路径(-v ):/usr/local/bin/php -v/us…

linux下的shell脚本(基础)

Shell是一种脚本语言&#xff0c;那么&#xff0c;就必须有解释器来执行这些脚本&#xff0c;常见的脚本解释器有&#xff1a; bash&#xff1a;是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成&#xff0c;是BourneAgain Shell的缩写&#xff0c;内部命令一共有…

mysql rsync复制,mysql复制又同步

mysql复制再同步由于一个老旧系统没有使用LVM分区,导致mylvmbackup不能使用。为了重新全量同步数据库&#xff0c;发现rsync可以使用&#xff0c;并且锁住数据库的时间不长。1. 首先刷新数据库到文件flush tables with read lock;unlock tables;2. 执行rsync进行数据库同步/usr…

解决springboot中只支持get请求,无法支持post请求

解决springboot中只支持get请求&#xff0c;无法支持post请求 报错信息如下&#xff1a; 405 相关类如下&#xff1a; RestController RequestMapping public class HttpServiceController {Autowiredprivate HttpSecretReport httpSecretReport;Autowiredprivate HttpSecret…

mysql2005卸载步骤,二次安装mysql步骤

1.先将mysql服务停止&#xff0c;并关闭服务页面(否则后面报错&#xff1a;“指定的服务已经标记为删除”)&#xff1a;打开“任务管理器”可以找到服务页面2.在控制面板对mysql进行删除。找到并将其卸载&#xff0c;如果没有直接跳过3.在注册表中删除相关目录。(使用组合键&qu…

Spring Boot 默认数据源 HikariDataSource_Spring Boot 中使用 Hikari

Spring Boot 默认数据源 HikariDataSource springboot2.x之后&#xff0c;系统的默认数据源由原来的的org.apache.tomcat.jdbc.pool.DataSource更改为com.zaxxer.hikari.HikariDataSource。 HikariDataSource 号称 Java WEB 当前速度最快的数据源&#xff0c;相比于传统的 C3…

matlab取出等高线上的数据,在Python或MATLAB中从等高线图中提取数据

这是一个小型的Matlab脚本&#xff0c;可以完成这项工作(使用一些GUI&#xff0c;在图的斜角处读取guidlines)&#xff1a;%// Import the data:imdata importdata(your_picture_file);Gray rgb2gray(imdata.cdata);colorLim [-1 1]; %// this should be set manually%// Ge…

SpringBoot-默认数据源HikariDataSource对数据库操作及自动装配原理

默认数据源HikariDataSource对数据库操作 在创建项目时选择JDBC以及MySQL驱动&#xff0c;让SpringBoot自动装配所需组件 创建完成后默认的pom.xml文件如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

matlab fgetl用法,Matlab fgetl strsplit 函数

函数功能&#xff1a;从文件中调用一行数据matlab中fgetl函数&#xff0c;并除去行末的换行符。语法格式&#xff1a;tline fgetl(fid)fid是通过fopen函数打开文件后得到的一个整型的文件标志。fgetl从这个文件中调用一行数据并丢弃其中的换行符。如果抓取成功tline容纳了调用…

HikariCP源码简洁剖析——HikariDataSource_HikariCP的使用和源码

文章目录HikariDataSource的作用源码剖析核心变量构造方法获取链接实例HikariCP的使用和源码简介HikariCP是什么&#xff1f;HikariCP 解决了哪些问题&#xff1f;为什么要使用 HikariCP&#xff1f;本文要讲什么&#xff1f;如何使用 HikariCP需求项目环境引入依赖编写 hikari…

MySQL如何创建沙箱,沙箱环境搭建 - osc_y8w65yuq的个人空间 - OSCHINA - 中文开源技术交流社区...

[toc]测试环境搭建沙箱环境&#xff1a;-------测试环境搭建基础配置&#xff1a;# 1、在沙箱环境下实名认证&#xff1a;https://openhome.alipay.com/platform/appDaily.htm?tabinfo# 2、电脑网站支付API&#xff1a;https://docs.open.alipay.com/270/105898/# 3、完成RSA密…

PHP单选框实现的方法,jQuery简单实现遍历单选框的方法

本文实例讲述了jQuery简单实现遍历单选框的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1、问题背景&#xff1a;有四个单选框&#xff0c;分别为一年四季&#xff0c;现在需要判断是否选中&#xff0c;如果选中这个单选框&#xff0c;就将其值赋值给输入框2、…

java.lang.StringIndexOutOfBoundsException: String index out of range: -1

[2022 中国 DevOps 现状调查全面启动&#xff01;>>> 字符串截取下标越界 java.lang.StringIndexOutOfBoundsException: String index out of range: -1at java.lang.String.substring(String.java:1967)出错代码 result.put("value", valueBuilder.toSt…

matlab 粘连分割代码,【求助】图像中粘连字符切分代码,求注释!!!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼% 依然是切分 %MarkMarkabs(I(j1,i)-I(j,i)); % 检测是否通过笔划jj1;endSegY[SegY j-1]; % 第一次切分截止处if (j38)PXR1[PXR1 i];PXR2[PXR2 i];else % 单点粘连SLii;while ((…

java中如何获取项目的路径

记录是为了更好的成长&#xff01; 1、ssm项目中 1.以工程名为TEST为例&#xff1a; (1)得到包含工程名的当前页面全路径&#xff1a;request.getRequestURI() 结果&#xff1a;/TEST/test.jsp (2)得到工程名&#xff1a;request.getContextPath() 结果&#xff1a;/TEST (3…

php用a什么软件来下载,AMQB官方PHP库

AMQB官方PHP库namespace PhpAmqpLib\Channel;use PhpAmqpLib\Exception\AMQPBasicCancelException;use PhpAmqpLib\Exception\AMQPProtocolChannelException;use PhpAmqpLib\Exception\AMQPRuntimeException;use PhpAmqpLib\Message\AMQPMessage;use PhpAmqpLib\Wire\AMQPReade…

String怎么转成BigDecimal_Java.math.BigDecimal类的使用

1.引言 浮点数值不适用于无法接受舍入误差的金融计算中。 例如&#xff0c;命令System.out.prmtln (2.0-1.1)将打印出0.8999999999999999&#xff0c;而不是人们想象的0.9 。 2.0-1.1的运算结果 这种舍入误差的主要原因是浮点数值采用二进制系统表示&#xff0c;而在二进制系统…

loadrunner支持php包吗,Loadrunner自带的WebTours

Loadrunner自带的WebTours发表于&#xff1a;2013-07-28来源&#xff1a;Csdn作者&#xff1a;Ocean-Lee点击数&#xff1a;由于今天花了时间去移动(Loadruner自带的WebTours例子程序)到其他的电脑上&#xff0c;方便练习Loadrunner&#xff0c;偷懒。 很久没有动部署的东西了&…

@Value(“#{}“)与@Value(“${}“)的区别

Value(“#{}”) 表示SpEl表达式通常用来获取bean的属性&#xff0c;或者调用bean的某个方法。当然还有可以表示常量用 Value(“${xxxx}”)注解从配置文件读取值的用法 一、 Value(“#{}”) 1 Value(“#{}”) SpEL表达式&#xff08;https://blog.csdn.net/ya_1249463314/articl…

JTS Java空间几何计算、距离、最近点、subLine等计算

文章目录前言地理坐标系和投影坐标系地理坐标系投影坐标系地图投影墨卡托/Web墨卡托常见坐标系地理坐标系和投影坐标系互转EPSG:3857和EPSG:4326Java各坐标系之间的转换&#xff08;高斯、WGS84经纬度、Web墨卡托、瓦片坐标&#xff09;GeotoolsJTSvividsolutions和locationtec…