彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 彩世界开奖app官网 2019-12-06 21:44 的文章
当前位置: 彩世界开奖app官网 > 彩世界开奖app官网 > 正文

文本处理工具AWK详解彩世界开奖app官网

描述awk函数示例(至少3例)
  • 可用函数rand()
    示列:
    awk 'BEGIN{print rand()}
    //使用rand()函数只能随机产生一个数字,这个数字是不会变的
    awk 'BEGIN{strand();print rand()}' //配合使用strand()函数,才生成一个大于0小于1的随机数awk 'BEGIN{strand();print int(100*rand())}'
    //生成一个小于100的随机整数。使用strand()与rand()乘以100可以得到一个随机的整数随机数,用int是为了截取整数部分,如果没有int,生成的数字会有小数部分。
  • 字符串函数
    用gsub或sub函数替换某些文本
    [root@qingcheng-db ~]# vim test.txt
    Allen phillips
    Green Lee
    William Lee
    william ken Allen
    [root@qingcheng-db ~]# awk '{gsub("l","L",$1);print $0}' test.txt
    ALLen phillips
    Green Lee
    WiLLiam Lee
    wiLLiam ken Allen
    //用gsub函数将小写l替换成大写L,但是替换范围只限于第一列
    [root@qingcheng-db ~]# awk '{gsub("[a-z]","6",$1);print $0}' test.txt
    A6666 phillips
    G6666 Lee
    W666666 Lee
    6666666 ken Allen
    //将第一段中的小写字母替换为6,并显示全部
    [root@qingcheng-db ~]# awk '{sub("l","L",$1);print $0}' test.txt
    ALlen phillips
    Green Lee
    WiLliam Lee
    wiLliam ken Allen
    //sub指挥替换指定范围内第一次匹配到的符号条件的字符,也就是第一段的第一个小写l

显示整个文本(注意,这里只是测试,所以只有一行)
#  awk '{print $N}' test.txt
this is a test.
# awk '{print $0}' test.txt
this is a test.
显示文本的一行中的第一个参数
# awk '{print $1}' test.txt
this
显示文本的一行中的第二个参数
# awk '{print $2}' test.txt
is
显示文本的一行中的第四个参数
# awk '{print $4}' test.txt
test.
显示文本的一行中的第一与第二个个参数
# awk '{print $1,$2}' test.txt
this is
显示文本的一行中的第一个与第二个参数,中间可以加#号
# awk 'BEGIN{OFS="#"}{print $1,$2}' test.txt
this#is
显示文本中的各个参数,还可以加修饰符
# awk 'BEGIN{OFS=":"}{print $1,$2,$3,$4}' test.txt
this:is:a:test.
显示文本中的参数,还可以加修饰符,还可以加字符串
#  awk 'BEGIN{OFS=":"}{print $1,"hello",$2}' test.txt
this:hello:is
输出三行,注意换行需要加n
# awk 'BEGIN { print "line onenline twonline three" }'
line one
line two
line three

awk使用说明,awk3121说明书

原文地址:

Awk使用说明

 

运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器),awk(报表生成器),该文档大致讲述一下awk语法和在日常运维工作中使用awk带来的好处和效率。再感叹一下awk实在是太强大了,完全是一门编程语言!(网上awk资料很多,自己整理Mark一下)

 

提示:Linux使用的gawk

官方解释:gawk - pattern scanning and processing language

[[email protected] ~]# ll /bin/awk

lrwxrwxrwx. 1 root root 4 Mar 16  2016 /bin/awk -> gawk

 

语法格式

  awk [ POSIX or GNU style options ] 'program-file/script' file ...

  awk [ POSIX or GNU style options ] 'program-text/PATTERN {action}' file ...

 

下面一一讲解各个参数的含义和用法

 

一:Options

参数选项,个人理解为打印报表输出指定哪种属性,一般用的最多的就是-F、-v两个参数

-F/--field-separator:Use fs for the input field separator.(分隔符文本切割字符串)

该参数支持各种表达式,包括正则表达式 如:-F "^m"

举例:ifconfig eth0 | awk -F "addr:| Bcast:" 'NR==2{print $2}'

-v:Assign the value val to the variable var, before execution of the program begins.

  Action内部可以引用脚本外的变量

举例:awk -v var="verrion" 'BEGIN{print var}'

 

二:行为模式

'program-text/PATTERN {action}':必须用单引号引用,中间的模式和action完全是一门编程语言,语法和其他编程或脚本语言类型,具有变量、逻辑语句等。

 

1、PATTERN模式

'program-text/pattern {action}'

模式类型

解释说明

举例

empty

空模式:匹配任意输入行

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

RE

正在表达式:格式为/regular expression/

awk -F: '/^m/{print $1}' /etc/passwd

BEGIN/END

仅在awk命令执行时运行一次或者结束前运行一次

awk -F: 'BEGIN{un="Username";id="Id";shell="Shell";printf "%-10s%-10s%-20sn",un,id,shell}{printf "%-10s%-10s%-20sn",$1,$3,$7'} /etc/passwd

Expression

表达式:其值非0或非空字符时满足条件

awk -F: '$1=="verrion"{print $1}' /etc/passwd

Ranges

指定范围匹配:格式为pat1,pat2

awk -F: '/^r/,/^m/{print $1}' /etc/passwd

 

2、常见的action

分类

解释说明

action类型

Action支持各种类型,如下:

expression表达式

regular expression正则表达式

Pattern expression模式匹配表达式

control statements控制语句

compound statements复合语句

Input statements输入语句

Output statements输出语句

下面语法会一一讲解

模式

指定一个行的范围,该语法不能包括BEGIN/END模式

BEGIN

让用户指定在第一条输入记录被处理之前所发生的动作,通常可在这里设置全局变量

END

让用户在最后一条输入记录被读取之后所发生的动作

 

3、语法如下

1)变量

要点

类型

说明

内置变量

记录变量

FS:field separator,读取文本时所使用的列分隔符

RS:Record separator,输入文本信息所使用的行分隔符

OFS:Output field separator

ORS:Output record separator

如:awk -F:  OFS="#"   FS="#"

数值变量

NR:The number of input records;awk命令所处理的记录数,如果有多个文件,这个数目会把处理的多个文件中读取的行统一计数;

NF:number of field;当前记录的field(列)个数;

FNR:与NR不同的是,FNR用于记录的行数是当前文件的总读取的行数;

ARGV:数组,保存命令行整个字符串,如awk '{print $0} test1.txt test2.txt'这个命令中,ARGV[0]保存awk,ARGV[1]保存test1.txt;

ARGC:awk命令参数的个数;

FILENAME:awk处理的文件名;

外来变量

自定义变量

用户自定义自己的变量以便在程序或者脚本中使用,变量名命令规则和其他程序语言相同,只能以字母

数字和下划线开头,gawk变量名称区分字符大小写

在脚本中赋值变量

给变量赋值使用赋值语句进行,比如:

awk 'BEGIN{var="verrion";print var}'

在命令行中赋值变量

在脚本外为变量赋值,并在脚本中进行引用,比如:

awk -v var="verrion" 'BEGIN{print var}'

 

2)数组

要点

说明

解释

表达式

array[index-expression]

可使用任意字符串,需要注意的是:如果某数组元素不存在,则自动创建此元素并初始化为空串;

下标值

不同之处

重点:不同于其他语言的数组,其下表值不止于数字,可以是字符串,同时每个下标值可以做累积

遍历元素

For循环

for(var in array){statement,...}

其中var用于引用数组的下标,而不是元素

判断元素

index in array

要判断某数组中是否存在某元素,需要使用index in array方式

删除数组

delete array[index]

从关系数组中删除数组索引需要用delete命令

典型案例

语法for(i in array){statement1;statement2;....}

1.awk -F: '$NF!~/^$/{BASH[$NF] }END{for(A in BASH){print "s;%in",A,BASH[A]}}' /etc/passwd

2.netstat -ant | awk '/^tcp/{ S[$NF]} END{for(a in S) print a,S[a]}'

 

3)操作符

类型

要点

说明

算法

数值运算

-x:负值    x:转换为数值   x^y或x**y:次方

x*y:乘法  x/y:除法  x y:加法  x-y:减法 x%y:求余

字符串

字符串连接

只有一个,而且不用写出来,用于字符串连接

比如:awk 'BEGIN{a="a";b="b";c=(a""b);print c}'

赋值

类似于算法操作

=:变量赋值 =  -=  *=  /=  %=  ^=  **=

:自增

--:自减

需要注意的是:如果某模式为*号,此时使用/*/可能会有语法错误,应以/[*]/替代;

布尔值

True/false

任何非0值或非空字符串都为真,反之就为假;

比较

数值比较
字符串匹配

x<y  x<=y  x>y  x>=y  x==y  x!=y

x~y y是个模式,x能被匹配到

x!~y 不匹配模式

逻辑关系

并且或者

&&:前一个条件满足才执行后一个条件

||:前一个条件不满足才执行后一个条件

条件表达式

复合表达式

selector?if-true-exp:if-false-exp
selector为真,执行if-true-exp,否则执行if-false-exp

函数调用

函数调用

function_name(argv1,argv2)

 

4)控制语句

表达式

语法

举例

if-else

if(condtion){then-body}else{[eles-body]}

awk -F: '{if ($1=="root") print $1,"Admin";else print $1,"Common User"}' /etc/passwd

 

while

while(condtion){statement;....}

awk -F: '{i=1;while(i<=3){print $i,i }}' /etc/passwd

 

do-while

do{statement;....}while(condtion)

awk -F: '{i=1;do {print $i,i }while(i<=3)}' /etc/passwd

 

for

for(variable assignment;condtion;iteration process){statement;....}

awk -F: '{for(i=1;i<=3;i )print $i}' /etc/passwd

 

case

switch(expression){case VALUE or /REGEXP/;statement1,statement2,...,default;statementN,...}

BEGIN {foo = 1;switch (foo) {case 3:print "x";break;case 2:print "y" ;break;case 1:print "z" ;break;default:print "default" ;}}

break和continue

常用于循环和case语句

awk -F: '{for(i=1;i<=3;i )if($i==root)break;print $i}' /etc/passwd

next

提前结束对本行文字的处理,并接着处理下一行

awk -F: '{if($3%2==0)next;print $1,$3}' /etc/passwd

 

 

5)打印输出

打印类型

使用方法

注意事项

print

prinf使用格式print item,....

1:各item之间使用逗号分开,而输出以空白输出;

2:输出的item可以为字符串或数值,如记录的字段(如$1),变量或awk的表达式,数值会先转换为字符串,然后再输出;

3:print后面的item可以省略,则如print $0,因此,如果想输出空白行,则需要使用print ""

printf

printf使用格式:

printf format, item....

1:与print最大不同在于printf需要指定format;

2:format用于指定后面的每个item输出格式;

3:printf不会自动打印换行符:n

format格式的指示符都以%开头,如下:

%c:显示字符的ASCII码;

%d,%i:十进制整数;

%f:显示浮点数;

%s:显示字符串;

%u:无符号整数;

%%:显示%本身;

修饰符:

N:显示宽度;

-:左对齐;

:显示数字符号;

如:%-10s 表示左对齐输出长度10个的字符串

 

6)函数

类型

常用函数

举例

内置函数

数值函数rand():返回0-1之间的一个随机数

awk 'BEGIN{print rand()}'

 

length([s]):返回指定字符串的长度

awk -F: '{print length($1)}' /etc/passwd

sub(r,s,[t]):以r表示的模式来查找t所表示的字符中的匹配的内容,并将其第一次出现替换为s所表示的内容

 

  awk -F: '{print sub(o,O,$1)}' /etc/passwd

 

gsub(r,s,[t]):以r表示的模式来查找t所表示的字符中的匹配的内容,并将其所有出现替换为s所表示的内容

ls -l /etc/hosts | awk -F "" '{gsub("r","4")};{gsub("w","2")};{gsub("x","1")};{gsub("-","0");print $2 $3 $4 $5 $6 $7 $8 $9 $10}'

split(s,a[,r]):以r为分隔符分割字符s,并将分割后的结果保存至a数组中,数组以下标为1开始的序列

netstat -ant | awk '/^tcp/{split($5,ip,":");count[ip[1]] } END{for(i in count){print i,count[i]}}'

自定义函数

可以在引号中的任意地方定义,用{}表示块整体,可以定义参数,但调用时可带可不带

用法如下:

awk '

  function max(a,b,c)

  {

  return a>b?a:b

  }

  {print max($1,$2)}' file

说明:显示每行前两个域的较大值,max为函数名,a、b为参数

原文地址: Awk 使用说明 运维必须掌握的三剑客工具: grep( 文件内容过滤器...

简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginxapache实现通过systemd来管理
  • 系统引导的新特性
    1. 系统引导时实现服务启动;
    2. 按需激活进程;
    3. 系统状态快照;
    4. 基于依赖关系定义服务控制逻辑;
  • 核心概念:unit(单元)
    1. unit由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听socket、保存的快照以及其他与init相关信息;这些配置文件主要保存在:
      /usr/lib/systemd/system
      /run/systemd/system
  • unit常见类型:
    Service unit:文件扩展名为.service,用于定义系统服务;
    Target unit:文件扩展为.target,用于模拟实现“运行级别”;
    //centos7没有启动级别,只有被访问时才启动
    Device unit:文件扩展名为.device,用于定义内核识别的设备;
    mount unit:文件扩展名为.mount,定义文件系统挂载点;
    Socket unit:文件扩展名为.socket,用于表示进程间通信用到的socket文件;
    Snapshot unit:文件扩展名为.snapshot,管理系统快照;
    Swap unit:文件扩展名为.swap,用于标识swap设备;
    Automount unit:文件扩展名为.automount,文件系统自动挂载点设备;
    Path unit:文件扩展名为.path,用于定义文件系统的文件或目录;
    /etc/systemd/system
  • 关键特性
    基于socket的激活机制:socket与程序分离;
    基于bus(总线)的激活机制;
    基于device的激活机制;
    基于Path的激活机制;
    系统快照:保存各unit的当前状态信息于持久存储设备中;
    向后兼容sysv init脚本;
  • 不兼容;
    systemctl的命令是固定不变的;
    非由systemd启动的服务,systemctl无法与之通信;
    /etc/init.d/
    管理系统服务:
    Centos7:SErvice类型的unit文件;
  • 编译安装Nginx
  1. 安装软件
[root@localhost ~]yum install -y pcre
[root@localhost ~]yum install -y pcre-devel
[root@localhost ~]yum install -y openssl-devel
[root@localhost ~]useradd nginx
[root@localhost ~]passwd nginx
[root@localhost ~]tar -vzxf nginx-1.11.3.tar.gz -C /usr/local
[root@localhost ~]cd nginx-1.11.3/
[root@localhost nginx-1.11.3]# ./configure 
> --group=nginx 
> --user=nginx 
> --prefix=/usr/local/nginx 
> --sbin-path=/usr/sbin/nginx 
> --conf-path=/etc/nginx/nginx.conf 
> --error-log-path=/var/log/nginx/error.log 
> --http-log-path=/var/log/nginx/access.log 
> --http-client-body-temp-path=/tmp/nginx/client_body 
> --http-proxy-temp-path=/tmp/nginx/proxy 
> --http-fastcgi-temp-path=/tmp/nginx/fastcgi 
> --pid-path=/var/run/nginx.pid 
> --lock-path=/var/lock/nginx 
> --with-http_stub_status_module 
> --with-http_ssl_module 
> --with-http_gzip_static_module 
> --with-pcre
[root@localhost nginx-1.11.3]# make &&make install

2.启动、重启、关闭

[root@localhost ~]/usr/local/nginx/sbin/nginx  //启动
[root@localhost ~]/usr/local/nginx/sbin -s reload //重启
[root@localhost ~]/usr/local/nginx/sbin -s stop //关闭

3.实现systemd管理nginx

[root@localhost ~]vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=Nginx Service
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

实例分析:

描述awk命令用法及示例(至少3例)
  • 简介
    awk是一个强大的文本分析工具,相当于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。awk就是把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
  • 使用方法
    awk [options] 'scripts' file1,file2, ...
    指定选项,指定报告格式化后的脚本,最后指定文件内容的来源;这表示它可以从多个文件中读取文本信息,之后根据所指定的脚本,将其格式化为特定格式,最后显示出来;脚本的格式一般分为两部分组成,如下:
    awk [options] 'PATTERN {action}' file1,file2,...
    脚本主要由PATTERN和action组成,PATTERN叫模式,这就意味着它并不是对文件中的每一行都进行处理,而仅仅是处理那些能够被模式匹配到的行。行匹配到以后就action,也就是做出相应处理,一般最常见的处理机制是打印出来。常用的打印命令有print和printf可以自定义显示格式,如显示的宽度,显示为字符串还是数值等。
    -awk基本处理机制
    一次从文件读取一行文本,awk会对其自动进行切片, 将每一行按字符串的分隔符进行切割。如这一行是this is test,它会默认使用空白字符放分隔符,不管空了几格,这样这一行就会分成四片,一片中保存一个单词,而这四片在awk中可以使用一个变量来引用,这个变量相关于脚本中的位置参数;
    $1,$2...$0
    -测试
[root@qingcheng-app3 lgp]# vim awk.txt 
this is a test
this[root@qingcheng-app3 lgp]# awk '{print $1,$2}' awk.txt
this is
[root@qingcheng-app3 lgp]# awk '{print $1}' awk.txt
this
[root@qingcheng-app3 lgp]# awk '{print $2}' awk.txt
is

指定分隔符的选项用-F,如-F:,表示以冒号为分隔符。另外还可以指定输出分隔符,如下:
[root@qingcheng-app3 lgp]# awk '{OFS=":"}{print $1,$2}' awk.txt
this:is
print的使用格式
print item1,item2,...
如果想在中间插入文本可按下面方法,在要插入的位置使用双引号引起要显示的内容即可:
[root@qingcheng-app3 lgp]# awk 'BEGIN {print "line onenline twonline three"}'
line one
line two
line three
//打印三行文本,n表示换行
[root@qingcheng-app3 lgp]# awk -F: '{print $1,$2}' /etc/passwd
//以冒号为分隔符,打印passwd的第一段和第二段

  • awk变量
    常用内置变量之记录变量
    FS:field separtor,读取文本时,所使用的字段分隔符
    RS:Record separator,输入文本信息所使用的换行符
    OFS:Output Filed Separator,输出字段分隔符
    ORS:Output Row Separator,输出行分隔符
  • awk内置变量之数据变量
    NR:The number of input records,awk命令所记录数。相当于当前的文件,他处理到多少行。如果有多个文件,这个数目会吧处理的多个文件中统一计数。
    NF:Number of field,当前记录的field个数,统计正在处理的当前行有多少字段
    FNR:与NR不同的是,RNR用于记录正处理的行是当前这一文件中被总共处理的行数
    ARGV:数组
    ARGC:awk命令参数的个数
    FILENAME:awk命令所处理的文件的名称
    ENVIRON:当前shell环境变量及其值的关联数组
  • 示列
    [root@qingcheng-app3 lgp]# awk '{print NF}' awk.txt
    4
    //显示一共有几个字段
    [root@qingcheng-app3 lgp]# awk '{print NR}' awk.txt
    1
    //NR是绝对计数u,显示行号

  • 用户自定义变量
    gawk允许用户自定义自己的变量以便在程序代码中使用,变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头。gawk变量名称区分字符大小写;要定义变量,只要在BEGIN模式中加入变量名等于变量值即可或在命令行中用-v选项定义变量
    [root@qingcheng-app3 ~]# awk -v test="hello awk" 'BEGIN{print test}'
    hello awk
    [root@qingcheng-app3 ~]# awk 'BEGIN{var="variable testing";print var}'
    variable testing
    //在awk中打印变量值是不用加$$的,加$符是打印字段。后面不带文件,只是做一个简单的演示的时候常用BEGIN。另外,在{}中定义变量时,系统会识别为两个语句,要用分号隔开。

  • printf命令的使用格式
    printf format, item1,item2,...
    要点:
    a、与print命令的最大不同是,print需要指定format
    b、format用户指定后面每个item的输出格式
    c、printf语句不会自动打印行符,如果需要换行,要加n
    format格式的指示符都以%开头,后面跟一个字符,如下:
    %c:显示字符的ASCII码
    %d,%i:十进制整数
    %e,%E:科学计数法显示数值
    %f:显示浮点数
    %g,%G:以科学计数法的格式或浮点数的格式显示数值
    %s:显示字符串
    %u:无符号整数
    %%:显示%本身
    修饰符
    N:显示宽度
    -:左对齐,不用一时是右对齐
    :显示数值符号
    示列:
    awk -F: '{printf "%-15s, %-10sn",$1 $3}' /etc/passwd
    //显示$1和$2时,$1左对齐显示15个字符串,没有内容就显示空白,显示$3时用10个字符,换行显示。这里还会显示一个逗号,这里是-15s后面的逗号
    awk -F:'{printf "%-5dn",$3}' /etc/passwd
    //以十进制显示每个用户的ID号,做对齐

1、各项目之间使用逗号隔开,而输出时则以空白字符分隔;

根据我们所定义的模式,一次从文件中读取一行文本,awk会对取出的文本做相应的切片,将每一行按照分隔符进行切割,假如我们有一行文本: this is a test.它会使用空白字符当做分隔符,将它们各个分开,切割成了四个片,分别为: this is a test.这四个片,可以使用变量,分别对应为$1,$2,$3,$4代表四个切割片,下面就做一个演示,看如何实现awk的强大功能

print的使用格式:
print item1, item2, ...

awk工作过程

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 下一页

awk使用的基本格式:

awk简介

了Bell实验室和GNU的一些扩展。下面就对awk进行介绍。

输出要点:

awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来...

3、print命令后面的item可以省略,此时其功能相当于print $0, 因此,如果想输出空白行,则需要使用print "";

awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows上实现,gawk, awk实现在linux上。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供

一、awk的输出:print

# awk [options] 'script' file1 file2, ...
# awk [options] 'PATTERN { action }' file1 file2, ...细化了上面的组合
常用的命令:print(输出), printf(打印)

2、输出的item可以为字符串或数值、当前记录的字段(如$1)、变量或awk的表达式;数值会先转换为字符串,而后再输出;

本文由彩世界开奖app官网发布于彩世界开奖app官网,转载请注明出处:文本处理工具AWK详解彩世界开奖app官网

关键词: