跳转到内容

Awk 入门/输出重定向和管道

来自维基教科书,开放的书籍,开放的世界

输出重定向运算符

[编辑 | 编辑源代码]

输出重定向运算符 ">" 可用于 Awk 输出语句。例如

   print 3 > "tfile"

—创建一个名为 "tfile" 的文件,其中包含数字 "3"。如果 "tfile" 已经存在,则其内容将被覆盖。

如果将更多内容打印到同一个文件中,其内容将不再被覆盖。例如,在运行以下代码之后

print "How doth the little crocodile" > "poem"
print "    Improve his shining tail," > "poem"
print "And pour the waters of the Nile" > "poem"
print "     On every golden scale!" > "poem"

"poem" 文件将包含以下内容

How doth the little crocodile 
     Improve his shining tail, 
And pour the waters of the Nile 
     On every golden scale! 

追加重定向运算符

[编辑 | 编辑源代码]

"追加" 重定向运算符 (">>") 的使用方法与 ">" 相同,不会覆盖文件。例如

   print 4 >> "tfile"

—将数字 "4" 追加到 "tfile" 的末尾。如果 "tfile" 不存在,则会创建它并将数字 "4" 追加到它。

将重定向与 printf 一起使用

[编辑 | 编辑源代码]

输出和追加重定向也可以与 "printf" 一起使用。例如

   BEGIN {for (x=1; x<=50; ++x) {printf("%3d\n",x) >> "tfile"}}

—将数字 1 到 50 导出到 "tfile"。

输出也可以使用 "|" ("管道") 运算符 "管道" 到另一个实用程序。作为一个简单的例子,我们可以将输出管道到 "tr" ("转换") 实用程序以将其转换为大写

   print "This is a test!" | "tr [a-z] [A-Z]"

这将产生

   THIS IS A TEST!

关闭文件

[编辑 | 编辑源代码]

可以使用函数关闭文件

close(file)

同时打开的文件数量有限制(在 Linux 下,典型限制为 1024),因此您可能希望关闭不再需要的文件。

注意!如果关闭文件,然后再次打印到该文件,系统会将您之前打印的任何内容都擦除,因为它将其视为一个新文件。例如,在

{
print "How doth the little crocodile" > "poem"
print "    Improve his shining tail," > "poem"
print "And pour the waters of the Nile" > "poem"
print "     On every golden scale!" > "poem"
close("poem")
print "      Lewis Carroll" > "poem"
}

"poem" 文件将只包含一行

      Lewis Carroll

在关闭文件后,切勿向其中输出任何内容!

关闭文件后,只能追加到其中。

华夏公益教科书