awk入门

linux之awk文本处理入门

1、awk简介

awk是一种编程语言,用于linux下对文本和数据进行处理。数据可以来来自标准输入一个或多个文件,或其他命令的输出

更多作为脚本来使用。

awk处理数据的方式:逐行扫描文件,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定动作,则把匹配的行显示到标准输出(屏幕)。如果没有指定模式,则所有被操作所指定的行都被处理。

2、awk 两种语法格式

awk [options] ‘commands’ filenames

awk [options] -f awk-script-file filenames

== options:

-F 定义输入字段分隔符,默认的分割符号是空格或者制表符

[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost ~]# awk '{print $1}' /etc/hosts    //获取hosts文件的第一列
127.0.0.1
::1
[root@localhost ~]# awk '{print $1}' /etc/passwd   //默认分隔符为空格或者\t
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin[root@localhost ~]# awk -F ":" '{print $1}' /etc/passwd  //指定分隔符为:
root
bin
daemon

== command:

BEGIN{ }{ }END{ }
行处理前(发生在读文件之前)行处理行处理后
通常用于定义一些变量,例如BEGIN{FS=’:’;OFS=’—’}
FS:字段分隔符
OFS:Out of Field Separator,输出字段分隔符
[root@localhost ~]# awk 'BEGIN{print 3}{print "ok"}END{print "------"}'  //后面没有文件依然有输出
3
[root@localhost ~]# awk 'BEGIN{print 3}{print "ok"}END{print "------"}' /etc/hosts
3      //行处理前
ok     //逐行处理
ok     //逐行处理
------ //行处理后
[root@localhost ~]# awk 'BEGIN{FS=":"}{print $1}END{print "------"}' /etc/passwd //FS:字段分隔符
root
bin
daemon
[root@localhost ~]# awk 'BEGIN{FS=":";OFS="---"}{print $1,$2}END{print "------"}' /etc/passwd  // OFS:Out of Field Separator,输出字段分隔符
root---x
bin---x
daemon---x

== awk命令格式

awk ‘pattern’ filename
实例:awk ‘/root/’ /etc/passwd //正则表达式

awk ‘{action}’ filename
实例:awk ‘{print $1}’ /etc/passwd //action模式
awk ‘pattern {action}’ filename

实例:awk ‘/root/{print $1}’ /etc/passwd
awk 'BEGIN{FS=":"} ‘/root/{print $1}’ /etc/passwd

command | awk ‘pattern {action}’
实例:df -P |grep ‘/’ |awk ‘$4>25000{print $4}’ //管道模式

[root@localhost ~]# awk  '/root/'  /etc/passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# awk -F: '{print $1,$3}'  /etc/passwd 
root 0
bin 1
//原理解读:1、awk使用一行作为输入,并将这一样赋给内部变量$0;2、然后行被``被分解成字段,每个字段存储在已编号的变量中,从$1开始,最多可以到100个字段3、awk是如何知道用空格还是其他的分割符来分割字段呢?因为有一个内部变量`FS`来确定字段分隔符。4、awk打印字段时,将使用print函数打印。awk在打印字段之间加上空格。因为$1$3之间有一个逗号。逗号比较特殊,他映射了另外一个内部变量`OFS`,`OFS`默认分隔符是空格。
[root@localhost ~]# awk '/root/{print $1}'  /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# awk 'BEGIN{FS=":"}/root/{print $1}'  /etc/passwd 
root
operator
[root@localhost ~]# df -P
文件系统        1024-块    已用    可用 配额 挂载点
/dev/sda3      18555904 9297296 9258608  51% /
devtmpfs        1917956       0 1917956   0% /dev
tmpfs           1932652       0 1932652   0% /dev/shm
tmpfs           1932652    9344 1923308   1% /run
tmpfs           1932652       0 1932652   0% /sys/fs/cgroup
/dev/sda1        303780  160340  143440  53% /boot
tmpfs            386532      52  386480   1% /run/user/1000
tmpfs            386532       0  386532   0% /run/user/0
/dev/loop0      4414592 4414592       0 100% /mnt
[root@localhost ~]# df -P |grep '/' |awk '$4>25000{print $4}'
9258608
1917956
1932652
1923308
1932652
143440
386480
386532
``

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

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

相关文章

[Advance] How to debug a program (上)

Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for “examine”) to examine memory in any of several formats, independently of your programs data types. x/nfu addr x addr x n, the repeat count The repeat count is a de…

windows7系统安装更新补丁提示0x80240037错误如何解决,文件的后缀名怎么换?

作者:WYF 我们以 IE11-Windows6.1-KB3008923-x64.msu 补丁为例 1、首先我们把IE11-Windows6.1-KB3008923-x64.msu的后缀名msu改为cab,然后解压,注意解压到一个新的文件夹中,不要在本文件夹中解压(例如:可以…

[转]C++中sizeof(struct)怎么计算?

版权属于原作者,我只是排版。 1、 sizeof应用在结构上的情况 请看下面的结构: structMyStruct{doubledda1;chardda;inttype;};对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:siz…

多核电脑的配件(CPU)

cpu CPU,全称中央处理器,既是电脑的指令中枢,也是系统的最高执行单位。 CPU主要负责指令的执行,作为电脑系统的核心组件,在电脑系统中占有举足轻重的地位,是影响电脑系统运算速度的重要部件。 cpu的基本信…

DELPHI怎样编写COM组件

元旦闲来无事,学习一下DELPHI怎样编写COM组件.结果一试才发现问题多多,要么是找不到接口,要么是找不到方法.查了很多资料,发现说的都不清楚.现在把我所学到的和大家分享一下,希望新学的人能少走弯路. 1、什么是COM COM是微软定的一种组件编写的规范,目的是为了实现组件的重用,不…

centos7利用nexus离线搭建局域网pypi源

centos7利用nexus离线搭建局域网pypi源 1、官网下载nexus oss版本 https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz [rootlocalhost bin]# wget https://sonatype-download.global.ssl.fastly.net/reposit…

c++链表的操作

#include <iostream>using namespace std;class Item{public:friend class List;private:Item(int d0){datad;next0;}Item *next;int data;};class List{private:Item *list;Item *endl();public:List(){list NULL;}List(int d){listnew Item(d);}int print();//输出int …

从零搭建nginx服务器

本文开始从零搭建一个nginx网页服务器。 1.最小化安装linux&#xff08;web服务器需要纯净的环境&#xff09; 2.局域网环境&#xff08;环境限制&#xff0c;需要搭建本地包配置环境&#xff09; 3.配置安装nginx环境 1.搭建系统 物理系统:两台浪潮服务器&#xff0c;两台联…

解决wordpress无法离线发布(远程发布)的故障

使用wordpress mu3.0与3.1时&#xff0c;不知道什么原因&#xff0c;只要开户了WORDPRESS的MU选项&#xff0c;Zoundry Raven和Windows Live Writer就无法注册账户成功(之前在Zoundry Raven里建好的账号还能收发&#xff0c;但不能新建)。在Zoundry Raven上表现为&#xff1a;输…

vim最常用快捷键

Vim最常用快捷键 拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy&#xff0c;并粘贴&#xff08;p&#xff09;。 删除当前行 dd , 删除当前行向下的 5 行 5dd 在文件中查找某个单词 [命令行下 /关键字 &#xff0c; 回车 查找 , 输入 n 就是查找下一个 ],查询 hello. 设置文件…

.NET中栈和堆的比较【转自:c#开发园地】

本文转自&#xff1a;C#开发园地 原文翻译的地址&#xff1a;http://www.cnblogs.com/c2303191/articles/1065675.html压栈(入栈)执行方法中的指令.NET中栈和堆的比较1 原文出处&#xff1a; http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM…

修改远程桌面的端口+防火墙设置

作者&#xff1a;WYF 修改远程桌面的端口防火墙设置&#xff08;最详细&#xff09; Windows系统中的远程终端服务是一项功能非常强大的服务&#xff0c;其默认的端口号3389很容易成为入侵者长驻主机的通道&#xff0c;使用户电脑成为通常称为的“肉鸡”&#xff0c;受入侵者远…

ppp和chap的区别

PAP和CHAP协议是目前的在PPP(MODEM或ADSL拨号)中普遍使用的认证协议&#xff0c;CHAP在RFC1994中定义&#xff0c;是一种挑战响应式协议&#xff0c;双方共享的口令信息不用在通信中传输&#xff1b;PAP在RFC1334中定义&#xff0c;是一种简单的明文用户名/口令认证方式。 2. P…

keepalived高可用+nginx负载均衡

keepalived高可用nginx负载均衡 1、IP地址规划 hostnameip说明KN0110.4.7.30keepalived MASTER节点 nginx负载均衡器KN0210.4.7.31keepalived BACKUP节点 nginx负载均衡器WEB0110.4.7.24web01节点WEB0210.4.7.25web02节点 2、关闭防火墙&#xff0c;selinux&#xff0c;并安装…

从几个版本的memcpy的测速过程学习一点底层的东西

以下有三个版本的memcpy&#xff0c;对于版本3&#xff0c;很多人都很熟悉&#xff0c;它很经典&#xff0c;很多人面试都写这个&#xff0c;可是我不得不说一句&#xff0c;对于类似的问题&#xff0c;最好的回答有两个&#xff1a;一是调用c库&#xff0c;二是使用汇编。用这…

nohup xxx 后台进程关闭,可以这样避免

nohup xxx &后台进程关闭&#xff0c;可以这样避免 1、nohup 是 no hang up 的缩写&#xff0c;就是不挂断的意思&#xff0c;但没有后台运行&#xff0c;终端不能标准输入。 加一个nohup命令在最前面&#xff0c;表示不挂断的运行命令 加一个&命令的最后面&#xf…

静态生成html的原理

虽然在性能上讲&#xff0c;即使将JSP或ACTION转换成HTML文件还是不如将某张JSP或某个ACTION缓存起来再作应响这种策略。但是&#xff0c;对大型的系统&#xff0c;JSP页面和ACTION可能成千上万&#xff0c;页每张JSP或每个ACTION反回的数据大概有几K左右。当然&#xff0c;我们…

centos利用nexus搭建局域网docker私有仓库

centos利用nexus搭建局域网docker私有仓库 1、官网下载nexus oss版本 https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz [rootlocalhost bin]# wget https://sonatype-download.global.ssl.fastly.net/repo…

整合apache和JBoss,配置虚拟主机

大致步骤&#xff1a;一、安装apache 二、安装JDK&#xff0c;作为JBOSS的运行环境三、安装JBOSS四、安装及配置mod_jk&#xff0c;用以apache和JBOSS之间的通信五、配置虚拟主机&#xff0c;把动态资源交给JBOSS处理安装apache&#xff1a;1、 安装&#xff1a;yum2、 配置&am…

Max retries exceeded with URL报错小记

from hyp mistake: 循环post请求第二遍报错 Max retries exceeded with URL for i in fac:url******payload ********req requests.request("POST", url, datapayload, headersheaders, timeout3)*******网上查询的方法 1、增加重试连接次数&#xff1a; reque…