自包含的awk脚本:保存到文件,调用文件

时间:2014-01-28 00:11:03

标签: bash input awk io output

对于实验室,我编写了一个使用awk做一些东西的shell脚本。重读实验室的指示,我似乎应该编写一个自包含的awk脚本。我正在努力将我的bash脚本翻译成awk,现在我遇到了问题:

我想将awk命令的输出保存到新文件,然后我想将该输出用作另一个awk命令的输入。

在我的bash脚本中,我有这个:

awk '/Blocked SPAM/' maillog > spamlog
cat spamlog | awk '{print $0}' RS=' '

它从maillog中获取包含字符串“Blocked SPAM”的所有行,并将其保存到名为spamlog的新文件中。然后它打开spamlog并用新行替换每个空格字符''。

对于我的awk脚本,maillog是从shell传递给脚本的文件。我尝试编写类似的代码:

/Blocked SPAM/ > spamlog`
-f spamlog {print $0} RS=' '

由于我无法为自包含的awk脚本找到有用的资源,所以我真的不知道我在用awk脚本做什么。

1 个答案:

答案 0 :(得分:2)

awk '/Blocked SPAM/{ print > "spamlog"; gsub( " ","\n"); print }' maillog

就个人而言,我更喜欢直接从shell脚本调用它,但你可以通过编写以下内容轻松地使它成为awk脚本:

#!/usr/bin/awk -f

/Blocked SPAM/{ print > "spamlog"; gsub( " ","\n"); print }

以'maillog'作为参数调用该脚本。