为什么 print 可以与 awk 一起使用而 echo 却不能?

为什么 print 可以与 awk 一起使用而 echo 却不能?

把它们加起来....

这有效:

awk 'BEGIN { FS=":"; }
{ print  $1  $3  $5; }' /etc/passwd

但这并没有:

awk 'BEGIN { FS=":"; }
{ echo  $1  $3  $5; }' /etc/passwd

我想知道为什么。

答案1

执行结构awk为:pattern { action statements }

动作
    动作语句用大括号 { 和 } 括起来。操作语句由大多数语言中常见的赋值、条件和循环语句组成。可用的运算符、控制语句和输入/输出语句均按照 C 中的模式进行设计。

  • print是 I/O 语句awk

    来自联机帮助页:

    print                 Print the current record.  The output record is terminated with the value of ORS.
    
  • 访问手册>打印声明:

    打印声明

    使用 print 语句以简单、标准化的格式生成输出。您仅在以逗号分隔的列表中指定要打印的字符串或数字。它们是输出,由单个空格分隔,后跟换行符。该声明如下所示:

    print item1, item2, …
    

访问man awk以了解更多详情。

另请注意:

PATTERNS AND ACTIONS
       AWK is a line-oriented language.  The pattern comes  first,  and  then  the  action.   Action  statements  are
       enclosed  in  {  and  }.  Either the pattern may be missing, or the action may be missing, but, of course, not
       both.  If the pattern is missing, the action is executed for every single record of input.  A  missing  action
       is equivalent to

              { print }

       which prints the entire record.

awk没有echo关键字/语句。

$ man awk | grep echo | wc -l
0

相关内容