awk编辑器(一)

简介: awk编辑器

前言

AWK是一个功能强大的编辑工具,用于在Linux及Unix环境中对文本和数据进行处理。


一、awk工具

1.1 awk概述

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

AWK是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作数据可以来自标准输入也可以是管道或文件。常作为脚本来使用。


1.2 awk工具介绍

功能强大的编辑工具

无交互的情况下实现复杂的文本操作

Awk的两种语法格式:


awk 选项 '模式或条件 {编辑指令}' 文件 1 文件 2 …
awk -f 脚本文件 文件 1 文件 2 …

二、awk工作原理

当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出

如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次。

逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。


sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个"“字段"然后再进行处理。

awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。

在使用awk命令的过程中,可以使用逻辑操作符”

&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。


三、awk内置变量

变量 描述
FS 输入字段分隔符,默认为空格或制表位(tab)
OFS 输出字段的分割符(默认是空格)
RS 输入行分隔符
ORS 输出行的分割符,默认为换行符
NF 当前处理的行的字段个数


NR 当前处理的行的行号(序数)
FNR 读取文件的记录行号(从1开始,若读取新的文件依旧是从1开始)
$0 当前处理的行的整行内容
$n 当前处理行的第n个字段(第n列)

四、案例

4.1基础案例

awk ‘{print}’ passwd.txt 打印所有


awk ‘{print $1}’ passwd.txt #打印第一列(awk默认把这一行当做一列,因为没有被空格分隔,awk默认以空格或tab键分隔)

awk -F: ‘{print $1}’ passwd.txt 自定义冒号为分隔符显示分隔之后的第1列



awk -Fx ‘{print $1}’ passwd.txt用x作为分隔符


awk -F: ‘{print $1,$2}’ passwd.txt 打印以:为分隔符的一列,二列 $1与$2 之间的逗号代表空格

\t 表示制表符。也是tab键


awk -F[: /] ‘{print $1,$2}’ passwd.txt 定义两个分隔符,:或者/ 两个有其中一个都算作是分隔符定义两个分隔符


4.2常用变量

NF  FS  NR  $0  $n  RS的使用举例
$1:代表第一列
$2:代表第二列以此类推
$0:代表整行
NF:一行的列数
NR:行数
RS:输入行分隔符 


RS:输入行分隔符


awk -F: '/root/{print $0}' passwd.txt    #打印包含root的整行内容
awk -F: '/root/{print $1}' passwd.txt    #打印包含root的行的第一列
awk -F: '/root/{print $1,$6}' passwd.txt #打印包含root的行的第一列和第六列
awk -F: '/\!/{print $1}' /etc/shadow     #输出shadow文件中以冒号分隔的有感叹号的行的第一列
awk -F[ :/] '{print NF}'  passwd.txt     #打印文件每一行以:或/为分割的列数
awk -F: '{print NF,$0}' passwd.txt       #打印passwd.txt文件每一行以:分割的列数及每行的内容
awk -F: '{print $NF}' passwd.txt         #打印passwd.txt文件每一行以:分割的最后一列
awk     '{print NR}' passwd.txt          #只显示每一行行号
awk     '{print NR,$0}' passwd.txt          #在每行前面加上行号










awk 'END{print NR}'  /etc/passwd         #打印总行数
awk 'END{print $0 }' /etc/passwd         #打印文件最后一行
awk -F: '{print "当前行有"NF"列"}' /etc/passwd   #打印当前行以:分割的总共有几列
awk -F: '{print "第"NR"行有"NF"列" }'/etc/passwd    #第几行有几列


相关文章
|
缓存 BI Linux
《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用
《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用
89 0
|
运维 安全 Shell
awk编辑器(二)
awk编辑器(二)
awk编辑器(二)
|
Shell Linux C语言
Linux文本三剑客之awk编辑器(热爱漫无边际)(二)
Linux文本三剑客之awk编辑器(热爱漫无边际)(二)
141 0
Linux文本三剑客之awk编辑器(热爱漫无边际)(二)
|
Linux C语言 Perl
Linux文本三剑客之awk编辑器(热爱漫无边际)(一)
Linux文本三剑客之awk编辑器(热爱漫无边际)(一)
127 0
Linux文本三剑客之awk编辑器(热爱漫无边际)(一)
|
Shell Perl 网络协议
awk(报告生成器),grep(文本过滤器),sed(流编辑器)使用入门
三剑客 linux下的文本三剑客 grep egrep,grep,fgrep 文本查找的需要 grep:根据模式搜索文本,并将符合模式的文本行显示出来。
961 0
|
7月前
|
存储 Linux 编译器
vim编辑器和gcc/g++编辑器的使用讲解
vim编辑器和gcc/g++编辑器的使用讲解
164 2
|
5月前
|
开发工具
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
|
6月前
|
开发工具
Vim 编辑器:高效文本编辑的瑞士军刀
**Vim 概览:** Vim 是一个功能丰富的文本编辑器,以其高度可定制性著称。文章介绍了 Vim 的高效使用技巧,包括快捷打开文件、命令行模式下的常用命令、查找与替换、删除和复制文本。还讨论了配置 `.vimrc` 文件以自定义设置,如改变 leader 键、设置缩进和高亮,并展示了安装插件如 vim-airline 和 vim-snazzy 的方法。通过这些技巧,用户能提升 Vim 使用效率。
76 5
|
6月前
|
Ubuntu 搜索推荐 Linux
Linux的Vim编辑器详解
Linux的Vim编辑器详解
|
5月前
|
Linux 开发工具 数据安全/隐私保护
【linux】如何优雅的使用vim编辑器
【linux】如何优雅的使用vim编辑器

热门文章

最新文章