我不能在awk手册中运行第一个例子?

时间:2012-09-13 11:58:25

标签: awk

awk手册将此列为第一个示例之一:

awk "BEGIN { print \"Don't Panic!\" }"

显然我应该看到“别恐慌!”,但实际上我看到了:

-bash: !\": event not found

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

一切都取决于你的shell。

> bash
$ awk "BEGIN { print \"Don't Panic!\" }"
bash: !\": event not found
$ tcsh
> awk "BEGIN { print \"Don't Panic!\" }"
Unmatched '.
> sh
$ awk "BEGIN { print \"Don't Panic!\" }"
Don't Panic!
$ 

现代shell使用感叹号来引用命令行历史记录的各个部分。在bashtcsh中,可以将它们解释为历史记录参考。您可以使用!转义\,也可以将其删除,也可以使用简单的shell。

在我上面的bash示例中,您会看到失败的历史记录替换。在我的tcsh示例中,您发现引用存在问题(因为双引号不能以这种方式转义)。你正在使用的awk手册可能已经足够大,以至于它不会假设每个人都运行bash。

答案 1 :(得分:2)

尝试

awk "BEGIN { print \"Don't Panic\!\" }"

这应该可以解决问题(在zsh下)。