Linux:Shell编辑之文本处理器(awk)

目录

绪论

1、用法

1.1 格式选项

1.2 awk 常用内置变量

1.3 awk的打印功能

1.4 奇偶打印

1.5 awk运算

1.6 awk的内置函数:getline

1.7 文本过滤打印

1.8 awk条件判断打印

1.9 三元表达式,类似于java

1.10 awk的精确筛选

1.11 awk和tr比较改变分隔符

1.12 awk结合数组来进行使用

1.13 去重统计


绪论

awk是文本三剑客之一(grep,sed,awk),是功能最强大的文本工具,也是按行来进行操作,对行操作完之后,可以根据指定命令来进行取列

awk的分割符,他的默认分隔符是空格,或者tab键,多个空格,它会自动压缩成一个

1、用法

awk  选项  '模式或者条件{操作}' 文件

1.1 格式选项

-F 指定分割符,如果是空格,则不需要加F

-v 变量赋值

{操作}:默认为打印

eg:awk  '{print  $1}'  test.txt  打印第一列

打印多列的话用逗号隔开,$0表示全部打印

1.2 awk 常用内置变量

$0 打印所有内容

$n 处理行的第几列

NR 处理行的行号

NF 处理当前行的字段个数,$NF就表示最后一个字段

FS 列分割符,指定文本的分割符,和F作用一直

F:分割符  FS=":"

OFS 输出文本的分割符

RS 输出分割符为回车,行分割符

内置变量$n要加$,表示列的;其他的内置变量,不用加$,更不能用引号,也不能用括号,否则会被当成字符串处理

1.3 awk的打印功能

awk  '{print}  '  文件名

awk  '{print  NR}  '  文件名

awk  '{print  NR,$0}  '  文件名

指定行号打印输出内容:

awk  'NR==3{print}'  test,txt  打印第三行

awk  'NR==2,NR==4{print}'  test,txt  打印第二到四行

awk  'NR==2;NR==4{print}'  test,txt  打印第二和四行

1.4 奇偶打印

awk  'NR%2==0{print}'  文件名  偶数打印

1.5 awk运算

awk  'BEGIN{PRINT  10+20}'

awk  'begin{print 3^2}'  3的2次方,也支持小数运算

awk  '{print  $3}'  test.txt取出第三行

1.6 awk的内置函数:getline

· 如果getline左右两侧没有重定向符号(<>),或者没有(|)时,awk会先读第一行,但是如果加了getline,跳过第一行,读取第二行

awk  '{getline;print}'  test.txt  打印了第二行和第四行,偶数打印

awk  '{print;getline}'  test.txt  奇数打印

· 如果两边有重定向或者管道符,getline作用于定向输入文件

awk  '{getline  <  "test1.txt";print>"test2.txt"}'  test1.txt操作对象是test1.TXT,获取test1的内容,传给test2

ls  |  awk  '{getline  ky30;print ,ky30;}'        getline:自定义的变量。把ls输出的结果传给ky30,打印前面ls的结果

1.7 文本过滤打印

awk 以root为开头的行:

awk  '/^root/{print}'  /etc/passwd

awk  'BEGIN{..};{..};END{..}'  文件在对文件进行操作之前会先执行BEGIN{..}的模式条件,或者是命令操作。中间的{..}是真正的处理文件的命令。END{..}结束语句,一般都是打印执行结果

v变量赋值,指的是改变分割符

1.8 awk条件判断打印

awk  -F:  '$3>100{print}'  /etc/passwd  |  head  -n  15  第三列大于100的打印出来

取反:awk  -F:  '!($3>10){print}'  /etc/passwd  |  head  -n  15

awk支持条件判断语句if

awk  -F:  '{if  ($3>10)  {print}}'  /etc/passwd

1.9 三元表达式,类似于java

格式:awk '(条件表达式)?(A表达式或者值):(B的表达式或者值)'

?相当于if       :相当于else

awk  -F:  '{i=($3>$4)?$3:$4;{print  $1,$2}}'  /etc/passwd

1.10 awk的精确筛选

 $NF:最后一个字段

head  -n  2  /etc/passwd  |  awk  -F:  '{print  $NF}'  第七个字段为bash,打印第一列和最后一列

awk  -F:  '$7!~"nologin"{print  $1,$3}'  /etc/passwd  第七个字段不是nologin的打印第一列和第三列

&&和    ||或   条件表达式用括号括起来

1.11 awk和tr比较改变分隔符

echo  a  b  <  d  |  tr  "   "  "   "  ":"  输出a:b:c:d

1.12 awk结合数组来进行使用

在awk中怎么定义数组

1.13 去重统计

 

 

提取host.txt主机名

 awk  -F  '[  .]+' '{print  $2}'  test.txt

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

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

相关文章

RabbitMQ 79b5ad38df29400fa52ef0085a14b02f

RabbitMQ 一、什么是消息队列 消息队列可以看作是一个存放消息的容器&#xff0c;其中&#xff0c;生产者负责生产数据到消息队列中&#xff0c;而消费者负责消费数据。消息队列是分布式系统中重要的组件&#xff0c;目前使用较多的消息队列有ActiveMQ&#xff0c;RabbitMQ&am…

【雕爷学编程】Arduino动手做(202)---热释电效应、热释电元件与HC-SR505运动传感器模块

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

谈谈Spring与字节码生成技术

Java程序员几乎都了解Spring。 它的IoC&#xff08;依赖反转&#xff09;和AOP&#xff08;面向切面编程&#xff09;功能非常强大、易用。而它背后的字节码生成技术&#xff08;在运行时&#xff0c;根据需要修改和生成Java字节码的技术&#xff09;就是一项重要的支撑技术。 …

PK Nounique CASCADE DROP INDEX keep index

Explicit Control Over Indexes when Creating, Disabling, or Dropping PK/Unique Constraints (Doc ID 139666.1)​编辑To Bottom PURPOSEIn Oracle 9i, the DBA has an explicit control over how indexes are affectedwhile creating, disabling, or dropping Primary Ke…

自动切换HTTP爬虫ip助力Python数据采集

在Python的爬虫世界里&#xff0c;你是否也被网站的IP封锁问题困扰过&#xff1f;别担心&#xff0c;我来教你一个终极方案&#xff0c;让你的爬虫自动切换爬虫ip&#xff0c;轻松应对各种封锁和限制&#xff01;快来跟我学&#xff0c;让你的Python爬虫如虎添翼&#xff01; 首…

SpringBoot 项目使用 Redis 对用户 IP 进行接口限流

一、思路 使用接口限流的主要目的在于提高系统的稳定性&#xff0c;防止接口被恶意打击&#xff08;短时间内大量请求&#xff09;。 比如要求某接口在1分钟内请求次数不超过1000次&#xff0c;那么应该如何设计代码呢&#xff1f; 下面讲两种思路&#xff0c;如果想看代码可…

【redis 3.2 集群】

目录 一、Redis主从复制 1.概念 2.作用 2.1 数据冗余 2.2 故障恢复 2.3 负载均衡 2.4 高可用 3.缺点 4.流程 4.1 第一步 4.2 第二步 4.3 第三步 4.4 第四步 5.搭建 5.1 主 5.2 从 6.验证 二、Reids哨兵模式 1.概念 2.作用 2.1 监控 2.2 自动故障转移 2.…

ArcGIS Pro基础:【按顺序编号】工具实现属性字段的编号自动赋值

本次介绍一个字段的自动排序编号赋值工具&#xff0c;基于arcgis 的字段计算器工具也可以实现类似功能&#xff0c;但是需要自己写一段代码实现&#xff0c; 相对而言不是很方便。 如下所示&#xff0c;该工具就是【编辑】下的【属性】下的【按顺序编号】工具。 其操作方法是…

redis基础

目录 前言 一、概述 1.NoSQL 2.Redis 二、安装 1.编译安装 2.RPM安装 三、目录结构 四、命令解析 五、redis登录更改 六、数据库操作 &#xff08;一&#xff09;、登录数据库 1.本地 2.远程登录 &#xff08;二&#xff09;、数据操作 1.数据库操作 2.数据操作 …

C++笔记之将定时器加入向量并设置定时器的ID为i

C笔记之将定时器加入向量并设置定时器的ID为i code review! 文章目录 C笔记之将定时器加入向量并设置定时器的ID为i关于代码中的void operator()() 运行 代码 #include <chrono> #include <iostream> #include <thread> #include <vector>// 定义定时…

京东秋招攻略,备考在线测评和网申笔试

京东秋招简介 伴随着社会竞争越来越激烈&#xff0c;人们投递简历的岗位也变得越来越多元&#xff0c;而无论人们的选择面变成何样&#xff0c;那些知名度较高的企业&#xff0c;永远都备受关注&#xff0c;只要其一发布招聘公告&#xff0c;总有人第一时间踊跃报名。而作为这…

linux自启动程序

嵌入式linux下有软件需要自启动&#xff0c;只需要在/etc/init.d/rcS末尾添加所要启动的程序即可&#xff0c;开机就会自动运行 vi /etc/init.d/rcS在文件末尾添加 例&#xff1a;

Zabbix6 对接飞书告警

文章目录 Zabbix对接飞书告警背景创建飞书群组Zabbix配置创建告警媒介类型创建动作用户关联飞书告警 Zabbix对接飞书告警 背景 运维 你看下他的进程是不是挂了&#xff0c;之前在9点28分有发消息的&#xff0c;这次没有发消息 哐哐哐的去看了一通&#xff0c;确实有个进程之前…

Nginx的优化和防盗链

一、Nginx的优化 1、隐藏版本号 curl -I http://192.168.79.28 #查看信息&#xff08;版本号等&#xff09;方法一&#xff1a;修改配置文件 vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type ap…

【Grafana】中文界面配置 v10.0.3

比如通过 docker run -d -p 3000:3000 -v /e/code/monitor/grafana/grafana.ini.txt:/etc/grafana/grafana.ini grafana/grafana运行一个容器&#xff08;最新是v10.0.3&#xff09;。 在 /admin/settings 可以看到 users 部分有一个 default_language 配置。 所以在挂载到 …

在vue项目使用数据可视化 echarts ,柱状图、折线图、饼状图使用示例详解及属性详解

官网地址&#xff1a;Apache ECharts ​一、下载插件并在页面中引入 npm install echarts --save 页面导入&#xff1a; import * as echarts from echarts 全局导入&#xff1a; main.js 中&#xff0c;导入并注册到全局 import echarts from echarts Vue.prototype.$echart…

【算法】双指针——leetcode盛最多水的容器、剑指Offer57和为s的两个数字

盛水最多的容器 &#xff08;1&#xff09;暴力解法 算法思路&#xff1a;我们枚举出所有的容器大小&#xff0c;取最大值即可。 容器容积的计算方式&#xff1a; 设两指针 i , j &#xff0c;分别指向水槽板的最左端以及最右端&#xff0c;此时容器的宽度为 j - i 。由于容器…

2、简单上手+el挂载点+v-xx(v-text、v-html、v-on、v-show、v-if、v-bind、v-for)

官网&#xff1a; vue3&#xff1a;https://cn.vuejs.org/ vue2&#xff1a;https://v2.cn.vuejs.org/v2/guide/ 简单上手&#xff1a; 流程&#xff1a; 导入开发版本的Vue.js <!--开发环境版本&#xff0c;包含了有帮助的命令行警告--> <script src"https…

SD-MTSP:光谱优化算法LSO求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、光谱优化算法LSO 光谱优化算法&#xff08;Light Spectrum Optimizer&#xff0c;LSO&#xff09;由Mohamed Abdel-Basset等人于2022年提出。 参考文献&#xff1a; [1]Abdel-Basset M, Mohamed R, Sallam KM, Chakrabortty RK. Light Spectrum Optimizer: A Novel Physi…

React Native 样式布局基础知识

通过此篇笔记能够学习到如下的几个知识点 在 React Native 中使用样式的一些细节了解 React Native 的 Flex 布局概念了解 React Native 的 flex 布局属性React Native 如何添加多样式属性React Native 中绝对布局和相对布局 React Native 中的 Flex 布局概念 1、主轴和交叉…