Linux中“awk”命令的用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<强> awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。强><强> 0,基本用法强>
awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理
awk
命令
格式如下
[- f分隔符)是可选的,因为awk使用空格,制表符作为缺省的字段分隔符,因此如果要浏览字段间有空格,制表符的文本,不必指定这个选项,但如果要浏览诸如/etc/passwd文件,此文件各字段以冒号作为分隔符,则必须指明- f选项
echo “却;能够is a test", |, awk & # 39; {$ 0, print } & # 39;,, # #,输出为,, 却;能够is a 测试
<代码>壳> 代码读取用户输入的字符串发现|,代表有管道。|左右被理解为简单
命令
,即前一个(左)边简单命令的标准输出指向后一个(右)边标准命令的标准输入
<代码> awk> 代码会根据分隔符将行分成若干个字段,0为整行,1美元为第一个字段,2美元为第2个地段,依此类推…
为打印一个字段或所有字段,使用打印命令。这是一个<代码> 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
<强> 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 , LPLinux中“awk”命令的用法