Linux中“awk”命令的用法

  

Linux中“awk”命令的用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。

<强> 0,基本用法

awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理
awk      命令      格式如下

<>以前awk  (-F 字段分隔符),& # 39;命令# 39;,输入文件(s)

[- f分隔符)是可选的,因为awk使用空格,制表符作为缺省的字段分隔符,因此如果要浏览字段间有空格,制表符的文本,不必指定这个选项,但如果要浏览诸如/etc/passwd文件,此文件各字段以冒号作为分隔符,则必须指明- f选项

 echo “却;能够is  a  test", |, awk  & # 39; {$ 0, print } & # 39;,,
  # #,输出为,,
  却;能够is  a 测试

<代码>壳> <代码> awk> 为打印一个字段或所有字段,使用打印命令。这是一个<代码> awk 动作

 echo “却;能够is  a  test", |, awk  & # 39;{1美元,print } & # 39;,,
  # #,输出为,,
  却,能够,
  echo “却;能够is  a  test", |, awk  & # 39; {, print  1美元,2美元,}& # 39;,,
  # #,输出为,,
  却;能够是

<代码>/etc/passwd>

根:x: 0时:根:根://bin/bash ,
  本:x: 1:1:本:/bin:/sbin/nologin ,
  守护进程:x: 2:2:守护进程:/sbin/sbin/nologin :,
  adm: x: 3:4: adm:/var/adm/sbin/nologin ,
  lp: x: 4: lp:/var/spool/lpd:/sbin/nologin 

<强>举几个简单的小需求

<强> 1,只显示/etc/passwd的账户

 awk  -F :, & # 39;{1美元,print } & # 39;,/etc/passwd ,
  # #,输出为,,
  root ,
  bin ,
  daemon ,
  adm ,
  lp 

癓inux中”awk”命令的用法"

<强> 2,显示/etc/passwd的第1列和第7列,用逗号分隔显示,所有行开始前添加列名start1, start7,最后一行添加,end1, end7

 awk  -F  & # 39;: & # 39;, & # 39; BEGIN  {print “start1 start7"}, {print  1美元,“,“,$ 7},最终获得{print “end1 end7"} & # 39;,/etc/passwd ,
  # #,输出为,,
  start1 start7 ,,
  根/bin/bash ,,
  本,/sbin/nologin ,
  守护进程,/sbin/nologin ,
  adm/sbin/nologin ,
  lp/sbin/nologin ,
  end1, end7 

开始语句在所有文本处理动作执行之前被执行,在结束所有文本处理动作执行之后被执行

<强> 3,统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容

 awk  -F :, & # 39; {, print  NR “,,,, NF “,,,, 0美元,}& # 39;,/etc/passwd ,
  # #,输出为,,
  7 1,,,,,,,根:x: 0时:根:根://bin/bash ,
  7 - 2,,,,,,,本:x: 1:1:本:/bin:/sbin/nologin ,
  7 3,,,,,,,守护进程:x: 2:2:守护进程:/sbin/sbin/nologin :,
  7 - 4,,,,,,,adm: x: 3:4: adm:/var/adm/sbin/nologin ,
  7 5,,,,,,,lp: x: 4: lp:/var/spool/lpd:/sbin/nologin 

<强> 1支持内置变量

上面示例中<代码> NR ,和<代码> NF> awk> <>之前变量名,解释   FILENAMEawk浏览的文件名   FS设置输入字段分隔符,等价于命令行- f选项   NF 浏览记录的字段个数   NR 已读的记录数

<强> 2支持函数

输出字符串的长度

 awk  & # 39; BEGIN  {, print 长度(“却;能够is  a  text"),} & # 39; 

# #输出为
14
将<代码>/etc/passwd>

 awk  -F  & # 39;: & # 39;, & # 39; {, print  toupper(1美元),}& # 39;,/etc/passwd 

# #输出为

 ROOT ,
  BIN ,
  DAEMON ,
  ADM ,
  LP 

Linux中“awk”命令的用法