首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >awk命令的含义

awk命令的含义
EN

Stack Overflow用户
提问于 2014-01-17 22:56:43
回答 1查看 630关注 0票数 1

我正在尝试理解shell脚本中的gawk。下面的命令试图根据两个(或更多)连续的新行数来计算段落数。

代码语言:javascript
复制
gawk 'END{print "Number of paragraphs: "NR}' RS="" tmp.txt

它怎麽工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-17 23:18:43

GNU awk手册中提到RS:

空字符串"" (没有任何字符的字符串)具有作为RS值的特殊含义。这意味着记录是由一个或多个空行分隔的,而没有其他的。

因此,您的程序可以解析如下:

代码语言:javascript
复制
gawk 'END{print "Number of paragraphs: "NR}' RS="" tmp.txt
  1. 运行gawk命令。
  2. gawk脚本是END{print "Number of paragraphs: "NR} (单引号由shell删除)。当输入结束时,它会打印NR的值,前面有一个短语。NR是读取的记录数。注意,这是在短语和NR之间使用隐式级联运算符。它也可以写成print "Number of paragraphs:", NR,并产生同样的结果。
  3. RS=""实际上被gawk看作是RS= (双引号由shell删除)。这将设置从手册中引用的特殊模式。在这里,两个或更多的连续换行符将被计算为段落的结尾,EOF也是如此。
  4. 所处理的文件为tmp.txt

因此,该命令之所以工作,是因为在gawk中内置了一个特殊情况。

本讨论中的所有内容也适用于标准awk

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21197519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档