<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Awk on pemako</title>
    <link>http://pemako.cn/tags/awk/</link>
    <description>Recent content in Awk on pemako</description>
    <image>
      <title>pemako</title>
      <url>http://pemako.cn/images/papermod-cover.png</url>
      <link>http://pemako.cn/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.146.6</generator>
    <language>en</language>
    <lastBuildDate>Thu, 09 Apr 2026 20:00:00 +0800</lastBuildDate>
    <atom:link href="http://pemako.cn/tags/awk/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Awk</title>
      <link>http://pemako.cn/posts/awk/</link>
      <pubDate>Thu, 09 Apr 2026 20:00:00 +0800</pubDate>
      <guid>http://pemako.cn/posts/awk/</guid>
      <description>&lt;p&gt;&lt;code&gt;AWK&lt;/code&gt;的工作模式 &lt;code&gt;awk &#39;Pattern {Action}&#39;&lt;/code&gt; 其中 &lt;code&gt;Pattern&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;常用变量及函数&#34;&gt;常用变量及函数&lt;/h2&gt;
&lt;h3 id=&#34;熟记的变量&#34;&gt;熟记的变量&lt;/h3&gt;
&lt;h4 id=&#34;nf&#34;&gt;&lt;code&gt;NF&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;NF&lt;/code&gt; 最后一个域，&lt;code&gt;$NF&lt;/code&gt;获取最后一个域的值。如下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;echo {a..d} | awk &#39;{print NF, $NF}&#39;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;4 d&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;nrfnr&#34;&gt;&lt;code&gt;NR/FNR&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;NR&lt;/code&gt;表示&lt;code&gt;awk&lt;/code&gt;开始执行程序后所读取的数据行数。&lt;code&gt;FNR&lt;/code&gt;与&lt;code&gt;NR&lt;/code&gt;功用类似,不同的是&lt;code&gt;awk&lt;/code&gt;每打开一个新文件,FNR便从0重新累计。如果是一个文件的话，NF和FNR没有区别&lt;/p&gt;
&lt;p&gt;有两个文件格式如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;account&lt;/code&gt;文件&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;张三|000001
李四|000002
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cdr&lt;/code&gt;文件&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;000001|10
000001|20
000002|30
000002|15
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;想要得到的结果如下&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;张三|000001|10
张三|000001|20
李四|000002|30
李四|000002|15
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;fsofs&#34;&gt;&lt;code&gt;FS/OFS&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;FS&lt;/code&gt;输入字段分隔符，默认为空格。&lt;code&gt;OFS&lt;/code&gt;输出字段分隔符，默认为空格。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;echo &amp;quot;1:2:3&amp;quot; | awk &#39;BEGIN{FS=&amp;quot;:&amp;quot;; OFS=&amp;quot;,&amp;quot;} {print $1, $2, $3}&#39;&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1,2,3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;rsorsrt&#34;&gt;&lt;code&gt;RS/ORS/RT&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;RS&lt;/code&gt;输入记录分隔符，默认为换行符。&lt;code&gt;ORS&lt;/code&gt;输出记录的分隔符默认为换行符号。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;➜  cat file
a b:c d
e f:g h
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下面这命令解释，首先修改了RS的，则上面的file文件中的行会变成下面三行内容。然后后面打印第2列，即输出的结果为&lt;code&gt;b d h&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;a b
c d e f
g h
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;➜ cat file | awk &amp;#39;BEGIN{RS=&amp;#34;:&amp;#34;} {print $2}&amp;#39;
b
d
h


➜ cat file | awk &amp;#39;BEGIN{RS=&amp;#34;:&amp;#34;; ORS=&amp;#34;,&amp;#34;} {print $2}&amp;#39;
b,d,h,

➜ cat file | awk &amp;#39;BEGIN{RS=&amp;#34;:&amp;#34;; ORS=&amp;#34;,&amp;#34;} {print $2, &amp;#34;&amp;lt;&amp;#34;RT&amp;#34;&amp;gt;&amp;#34;}&amp;#39;
b &amp;lt;:&amp;gt;,d &amp;lt;:&amp;gt;,h &amp;lt;&amp;gt;,
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如上面的一个例子 &lt;code&gt;RT&lt;/code&gt;的值就是匹配到的&lt;code&gt;RS&lt;/code&gt;的值，&lt;code&gt;RS&lt;/code&gt;的值可以采用正则进行设定。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
