b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

linux awk命令统计模式扫描和处理语言详解

电脑杂谈  发布时间:2019-07-22 06:07:12  来源:网络整理

awk dict_awk语言_awk split

本篇我们介绍了 grep 命令和正则表达式的基本使用,grep 是 linux 下的一个文本处理命令,配合正则表达式使用,其功能非常强大。本文通过实例代码给大家介绍了js使用正则表达式控制用户输入银行卡号及格式化的方法,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧...。在使用 grep 时,如果想要开启扩展正则表达式,需要指定 -e 选项,而 egrep 命令则是默认支持扩展正则表达式。

关于

awk其实并不算一个工具,相当于是一个脚本语言,awk就是这个脚本语言的解释器,这是GNU手册中的定义:pattern scanning and processing language。本文就把它当成一个简单的文本流处理工具来用,虽然我们有了sed,但sed在处理一行中的各列(某种分隔符进行分隔的字符串)时远没有awk功能强大。awk也是以某种模式一行行地处理各列,但对于各列中的内容可以非常精确化地处理。awk会将所处理行中的各列分别赋给$1..$n,$0表示当前一整行。

awk的用法为:awk [可选项] '脚本' [INPUTFILES],或者处理awk脚本文件:awk [可选项] -f SCRIPTFILE [INPUTFILES]awk语言,当然awk也可以直接用于处理管道传递来的文本流

下面分别说一下这几部分:

可选项

awk的可选项非常多,这里只说几个常用的

脚本语句

awk的脚本语句格式通常为:'[条件判断1][命令1] [条件判断2][命令2]...'

脚本需要被放在单引号中,条件类型和命令都是可选的,当只有条件判断而没有命令时,则会输出符合条件的整行。当然如果只有命令而没有条件判断时,则对每一行按命令处理。命令及命令参数需要使用一对大括号括起来,最常用的命令就是print和printf,这两个命令其实都是linux内建的命令,prinf用于输出变量,类似与echo,默认在结尾输出换行。printf类似于C语言中的格式化输出函数printf,可以根据格式化输出参数来格式化输出,默认没有换行,所以如果需要换行就需要使用\n,不需要使用小括号,直接将需要。

先来举几个个简单的例子:

此处都是/etc/passwd文件为例

输出/etc/passwd中的第三列小于10的行:

awk -F: '$3<10' /etc/passwd

这里我们通过-F指定分隔符为:,因为/etc/passwd中的各行包含的内容都以:分隔,然后使用$3取第3列与数字10进行比较

输出passwd中各行第1列与第3列的内容:

awk -F: '{print $1,$3}' /etc/passwd

这里print后面跟的变量以逗号(,)分隔,默认输出结果以空格分隔awk语言,如果想要以其他方式分隔中间直接插入双引号引入的字符串即可,例如输出结果以->分隔:print $1"->"$3,不分隔:print $1$3

将第一列与第3列使用->连接并将第3列以16进制输出:

awk -F: '{printf "%s->%x\n", $1,$3}' /etc/passwd

awk模式扫描和处理语言

功能描述:

使用awk命令可以行读入文件,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk是一个强大的文本分析工具,相对于grep查找、sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。

命令语法:

awk[选项][文件]

awk[选项][程序][文件]

awk命令选项含义

-f<程序文件>

从指定程序文件读取AWK程序源

-F<文件系统>

使用指定文件系统为输入字段分隔符

-v<变量=值>

开始执行程序之前为变量值

-mf<值>

设置不同的内存限制值。f标志设置字段的最大数目

-mr<值>

设置不同的内存限制值。r标志设置最大记录大小

在程序的内部表示启用优化

运行在兼容模式下

--dump-variables=<文本>

显示全局变量、其类型值和最终值到文件的排序列表

--exec=<文本>

类似于-f选项,但这是选项的最后一个处理

扫描和解析AWK程序,并在标准输出上生成一个GNU.po格式文件

--non-decimal-data

在输入数据中识别八进制和十六进制值

--profile=<文本>

发送分析数据文件。默认值是awkprof.out

--re-interval

awk split_awk语言_awk dict

启用正则表达式匹配使用间隔表达式

--source=<程序文本>

使用指定程序文本作为AWK程序的源代码

--traditional

匹配传统的UNIX awk正则表达式

显示在标准输出上可用的选项相对简短摘要

--use-lc-numeric

当解析输入数据时强制使用语言环境的小数点字符

内置变量

内置变量

命令行参数个数

命令行参数排列

包含当前环境的值的数组

当前输入文件的名称

当前输入文件的输入记录数

输入字段分隔符,默认情况下为一个空格

在当前输入记录中的字段的数目

已读的记录数

输出字段分隔符

输出记录分隔符

输入记录分隔符,默认情况下为一个换行符

用于数字的输出格式

记录终止符

匹配第一个字符的索引

匹配字符串长度

字符用于分隔多个标在数组中的元素,默认情况下是“\034”

TEXTDOMAIN

awk程序的文本域

当前文件的ARGV索引正在处理中

在排POSIX系统上,指定使用“二进制”模式下所有的文件I/O

用于数字的转换格式,默认情况下是“%.6g”

IGNORECASE

控制所有的正则表达式和字符串操作区分大小写

提供数组的元素访问运行AWK程序有关信息

字符串常量

字符串常量

反斜线

alert字符,通常为ASCII BEL字符

退格键

换行符

水平制表符

垂直制表符

\xhex digits

字符由十六进制数字下面的\x中的字符串来表示

字面字符c

例如:只显示最近登录系统的5个用户

[root@localhost ~]# last -n 5 | awk '{print $1}'

root

root

awk语言_awk split_awk dict

root

reboot

root

wtmp

只显示/etc/passwd文件中的账户

[root@localhost ~]# cat /etc/passwd | awk -F: '{ print $1 }'

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

uucp

operator

games

gopher

ftp

nobody

dbus

usbmuxd

rpc

oprofile

vcsa

rtkit

abrt

hsqldb

avahi-autoipd

saslauth

postfix

apache

rpcuser

nfsnobody

haldaemon

gdm

ntp

pulse

tomcat

sshd

tcpdump

mysql

只显示/etc/passwd文件中的账户和账户对应的shell,账户与shell之间以[Tab]键分隔

[root@ubuntu]awk_test:$ cat /etc/passwd | awk -f ':' '{print $1}'。[kodango@devops awk_temp]$ awk -f: '{print $1}' /etc/passwd | head -3 。[root@localhost medesky]# cat /etc/passwd。

root/bin/bash

bin/sbin/nologin

daemon/sbin/nologin

adm/sbin/nologin

awk语言_awk split_awk dict

lp/sbin/nologin

sync/bin/sync

shutdown/sbin/shutdown

halt/sbin/halt

mail/sbin/nologin

uucp/sbin/nologin

operator/sbin/nologin

games/sbin/nologin

gopher/sbin/nologin

ftp/sbin/nologin

nobody/sbin/nologin

dbus/sbin/nologin

usbmuxd/sbin/nologin

rpc/sbin/nologin

oprofile/sbin/nologin

vcsa/sbin/nologin

rtkit/sbin/nologin

abrt/sbin/nologin

hsqldb/sbin/nologin

avahi-autoipd/sbin/nologin

saslauth/sbin/nologin

postfix/sbin/nologin

apache/sbin/nologin

rpcuser/sbin/nologin

nfsnobody/sbin/nologin

haldaemon/sbin/nologin

gdm/sbin/nologin

ntp/sbin/nologin

pulse/sbin/nologin

tomcat/sbin/nologin

sshd/sbin/nologin

tcpdump/sbin/nologin

mysql/sbin/nologin

只显示/etc/passwd文件中的账户和账户对应的shell,账户与shell之间以逗号分隔,在所有行添加列名name,shell,在最后一行添加blue,/bin/nosh。

[root@localhost ~]# cat /etc/passwd |awk -F: 'BEGIN {print"name,sehll"} {print $1","$7}'

name,sehll

root,/bin/bash

bin,/sbin/nologin

daemon,/sbin/nologin

adm,/sbin/nologin

lp,/sbin/nologin

sync,/bin/sync

shutdown,/sbin/shutdown

halt,/sbin/halt

mail,/sbin/nologin

uucp,/sbin/nologin

operator,/sbin/nologin

games,/sbin/nologin

gopher,/sbin/nologin

awk split_awk dict_awk语言

ftp,/sbin/nologin

nobody,/sbin/nologin

dbus,/sbin/nologin

usbmuxd,/sbin/nologin

rpc,/sbin/nologin

oprofile,/sbin/nologin

vcsa,/sbin/nologin

搜索/etc/passwd文件中有root关键字的所有行

[root@localhost ~]# awk -F: '/root/' /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

搜索/etc/passwd文件中有root关键字开头的所有行。

[root@localhost ~]# awk -F: '/root/' /etc/passwd

统计/etc/passwd文件,显示文件名,每行行号,每行的列数,对应的完整行内容

awk---grep---sed [root@book class]# df -k | awk '{print $1}' | grep -v 'none' | sed s"/\/dev\///g"。[root@tx3 ~]# awk 'begin{"date"| getline a}{print}end{print a}' cj。[root@mos download]# awk -f: {'print $1,$nf'} /etc/passwd|tail -1。

filename:/etc/passwd,linenumber:1,>columns:7,linecontent:root:x:0:0:root:/root:/bin/bash


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-114805-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...