Awk入门
Completion requirements
Awk 输出重定向(Output Redirection)
在 Awk 中,可以使用 >
(重写) 和 >>
(追加) 将输出 重定向到文件。此外,还可以使用 管道(|
) 传输数据到外部命令。
1. >
(输出重定向)
语法
print 内容 > "文件名"
- 如果文件不存在,会创建一个新文件。
- 如果文件已存在,会覆盖其内容。
示例:写入文件
BEGIN {
print 3 > "output.txt"
}
output.txt
内容
3
⚠️ 注意:如果
output.txt
已存在,其内容会被清空并覆盖。
2. >>
(追加重定向)
语法
print 内容 >> "文件名"
- 如果文件不存在,会创建一个新文件。
- 如果文件已存在,不会覆盖,而是追加到文件末尾。
示例:追加写入文件
BEGIN {
print "Hello, world!" >> "output.txt"
print "Appending line 2" >> "output.txt"
}
output.txt
内容
3
Hello, world!
Appending line 2
3. printf
结合输出重定向
语法
printf("<格式>", 参数) > "文件名"
printf("<格式>", 参数) >> "文件名"
示例:使用 printf
格式化输出
BEGIN {
for (x=1; x<=5; ++x) {
printf("Number: %03d\n", x) >> "numbers.txt"
}
}
numbers.txt
内容
Number: 001
Number: 002
Number: 003
Number: 004
Number: 005
4. 管道 |
(输出到外部命令)
语法
print "内容" | "外部命令"
- 将
print
的输出传递给 Shell 命令处理。
示例:转换为大写
BEGIN {
print "hello awk!" | "tr a-z A-Z"
}
输出
HELLO AWK!
5. 关闭文件 close()
语法
close("文件名")
- 减少打开的文件数量(Linux 通常最大 1024 个)。
- ⚠️ 关闭文件后不能再使用
>
写入,否则文件内容会被清空!
示例:错误写入
{
print "Line 1" > "example.txt"
print "Line 2" > "example.txt"
close("example.txt")
print "Line 3" > "example.txt" # 重新打开,会覆盖之前的内容!
}
example.txt
最终内容
Line 3
⚠️ 解决方案:如果要继续写入,使用
>>
追加,而不是>
!
6. 练习
练习 1:创建并追加写入
BEGIN {
print "First line" > "test.txt"
print "Second line" >> "test.txt"
}
test.txt
内容
First line
Second line
练习 2:输出到 Shell 命令
BEGIN {
print "hello awk" | "tr a-z A-Z"
}
输出
HELLO AWK
下一章,我们将学习 Awk 的输入处理(File Processing) 🚀
Last modified: Thursday, 30 January 2025, 1:25 AM