Awk 入门/输出重定向和管道
外观
< 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" 一起使用。例如
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
在关闭文件后,切勿向其中输出任何内容!
关闭文件后,只能追加到其中。