如何在ksh中正确使用awk?

如何在ksh中正确使用awk?

我有:

  1 #!/bin/ksh
  2 BEGIN { print "START" }
  3       { print "Hello World" }
  4 END   { print "STOP"   }
  5 
  6 
  7 exit 0

然后当我尝试运行该文件时出现以下错误:

./file[2]: BEGIN: not found
./file[3]: syntax error: `{' unmatched

命令awk需要在关键字前面吗BEGIN

答案1

当我解释你的问题时,你正在尝试awk运行一个简单的脚本,然后你将ksh围绕它详细说明一个脚本。为此,您需要像这样修改脚本:

  1 #!/bin/ksh
  2 awk 'BEGIN { print "START" } \
  3       { print "Hello World" } \
  4 END   { print "STOP"  }'
  5 
  6 
  7 exit 0

您的脚本将awk使用一个大字符串作为awk脚本执行(从 $PATH)。大字符串用单引号引起来,以防止ksh进行字符串插值,并且反斜杠作为第 2、3、4 行的最后一个字符存在,以使其成为一个大字符串,而不是 3 个较小的字符串。

打印“START”后脚本ksh将显示为挂起。只需按几次“返回”或“输入”即可。每次“输入”时您都会看到“Hello World”。执行 control-D 以指示文件结束awk。该awk进程将打印“STOP”并退出。

要执行其他操作,您需要编写更多内容ksh- 提供awk输入文件,将其发送到文件或管道中,等等。

相关内容