<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[运维进行时]]></title> 
<link>https://blog.liuts.com/index.php</link> 
<description><![CDATA[互联网运维与架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[运维进行时]]></copyright>
<item>
<link>https://blog.liuts.com/post//</link>
<title><![CDATA[笔记:awk(一)]]></title> 
<author>root &lt;admin@yourname.com&gt;</author>
<category><![CDATA[SHELL]]></category>
<pubDate>Tue, 21 Aug 2007 14:00:16 +0000</pubDate> 
<guid>https://blog.liuts.com/post//</guid> 
<description>
<![CDATA[ 
	1.awk &#124; -F field-separator&#124; `cmd` input file<br/>&nbsp;&nbsp; awk -F : `cmd` input file<br/>2.将awk命令插入一个文件，并使awk程序可以执行，然后用awk命令解释器作为脚本首行。<br/>3.将所有awk命令插入一个单独文件<br/>&nbsp;&nbsp; awk -f awk-script-file inputfile<br/>模式和动作<br/>模式：两个特殊断 BEGIN和END<br/>动作：实际动作大多在&#123;&#125;内指明<br/>域和记录<br/>浏览域表记为 $1,$2,......$n($1-$n称为域标识)<br/><br/>输出<br/>1.抽取域<br/>awk -F: '&#123;print $1&#125;' /etc/passwd<br/>2.保存输出<br/>awk -F: '&#123;print $1&#125;' /etc/passwd &#124; tee user<br/>awk -F: '&#123;print $1&#125;' /etc/passwd >user<br/>3.使用标准输出<br/>4.打印所有记录<br/>awk -F: '&#123;print $0&#125;' /etc/passwd<br/>5.打印单独记录<br/>awk -F: '&#123;print $1,$4&#125;' /etc/passwd<br/>6.打印报告头<br/>awk -F: 'BEGIN &#123;print "NAME&#92;n"&#125; &#123;print $1&#125;' /etc/passwd<br/>7.打印结尾<br/>awk -F: '&#123;print $1&#125; END &#123;print "this is all users"&#125;' /etc/passwd<br/><br/>条件操作符<br/>1.匹配<br/>awk '&#123;if($1~/root/) print $0&#125;' /etc/passwd&nbsp;&nbsp; //&#123;if($1~/root/) print&#125;表示如果field1包含root,打印它//<br/>2.精确匹配<br/>使用等号 ==<br/>3.不匹配<br/>!~<br/>4.小于<br/>if($6 < $7)<br/>5.小于等于<br/>6.大于<br/>7.设置大小写<br/>awk '/[Rr]oot/' /etc/passwd<br/>8.任意字符<br/>awk '$~/^...a/' /etc/passwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//^...a表示第四个字幕是a//<br/>9.或关系匹配<br/>'$0 ~/(root&#124;ftp)/'<br/>10.行首<br/>awk '/^48/' input-file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ^48(行首包含48)<br/>11.AND &&<br/>'&#123;if ($1=="P.bunny" && $4=="") print $0&#125;'<br/>12.OR &#124;&#124;<br/><br/>内置变量:<br/>ARCC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;命令行参数个数<br/>ARGV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;命令行参数排列<br/>ENVIRON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;支持队列中系统环境变量的使用<br/>FNR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 浏览文件的记录数<br/>FS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;置顶分隔符，等价于-F<br/>NF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;浏览记录的域的个数<br/>NR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;已读的记录数<br/>OFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出域分隔符<br/>ORS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出记录分隔符<br/>RS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 控制记录分隔符<br/><br/>设置输入域到变量名<br/>awk -F '&#123;name=$1; pach=$7; if(name~/root/) print name" pach is "pach&#125;' /etc/passwd<br/>域值比较操作<br/>awk '&#123;if($6<$7) print $0&#125;' input-file<br/>修改改数值域取值<br/>awk ‘&#123;if($1="NAME) $6=$6-1; print$1,$6,$7&#125;' input-file<br/>修改文本域<br/>awk ’&#123;if($1="J.Troll") ($1="J.L.Troll); print $1&#125;' input-file<br/>只显示修改改记录<br/>awk ’&#123;if($1="J.Troll") &#123;$1="J.L.Troll; print $1&#125;&#125;' input-file<br/>创建新的输入域<br/>awk '&#123;if($6>$7) &#123;$8=$6-$7; print $1,$8&#125;' input-file<br/>增加列值<br/>awk '(tot=$6) END &#123;print"..................."tot&#125;' input-file<br/>文件长度相加<br/>ls -l &#124; awk '/^[^d]/ &#123;print $9"&#92;t $5&#125; &#123;tot+ =$5&#125; END &#123;print "tltal kb:"tot&#125;'<br/>Tags - <a href="https://blog.liuts.com/tags/awk/" rel="tag">awk</a>
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post//#blogcomment</link>
<title><![CDATA[[评论] 笔记:awk(一)]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://blog.liuts.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>