广东技术师范学院后院社区's Archiver

lvdbing 发表于 2008-4-22 02:27

Awk各部分详解-管道(15)

[align=left]如果在[color=black][size=10.5pt]awk[/size][/color][color=black][size=10.5pt]程序中打开了管道,就必须先关闭它才能打开另一个管道。管道符右边的命令被括在双引号之间。每次只能打开一个管道。[/size][/color] [/align][align=left][table=98%,#e6e6e6][tr][td=1,1,707][b][color=black][size=10.5pt]范例[/size][/color][/b][b][color=black][size=10.5pt] 3-29[/size][/color][/b]
[color=black][size=10.5pt][root@localhost script]# [b]awk[/b][b] -F ':' '{print $1 | "sort"}' passwd[/b][/size][/color]
[color=black][size=10.5pt]adm[/size][/color]
[color=black][size=10.5pt]apache[/size][/color]
[color=black][size=10.5pt]bin[/size][/color]
[color=black][size=10.5pt]canna[/size][/color]
[color=black][size=10.5pt]daemon[/size][/color]
[color=black][size=10.5pt]dbus[/size][/color]
[color=black][size=10.5pt]ftp[/size][/color]
[color=black][size=10.5pt]games[/size][/color]
[color=black][size=10.5pt]… … …[/size][/color]
[color=black][size=10.5pt]### [/size][/color][color=black][size=10.5pt]解析[/size][/color][color=black][size=10.5pt] ###[/size][/color]
[color=black][size=10.5pt]Awk[/size][/color][color=black][size=10.5pt]使用管道将[/size][/color][color=black][size=10.5pt]print[/size][/color][color=black][size=10.5pt]语句的输出结果发给[/size][/color][color=black][size=10.5pt]sort[/size][/color][color=black][size=10.5pt]命令作为输入。[/size][/color][color=black][size=10.5pt]Snort[/size][/color][color=black][size=10.5pt]命令进行排序后输出。[/size][/color]
[/td][/tr][/table][/align]
[align=left][color=black][size=10.5pt][font=Arial]●[/font]         [/size][/color][color=black][size=10.5pt]关闭文件和管道[/size][/color][/align][align=left][color=black][size=10.5pt]    如果打算再次在[/size][/color][color=black][size=10.5pt]awk[/size][/color][color=black][size=10.5pt]程序中使用某个文件或管道进行读写,则可能要先关闭程序,因为其中的管道会保持打开状态直至脚本运行结束。注意,管道一旦被打开,就会保持打开状态直至[/size][/color][color=black][size=10.5pt]awk[/size][/color][color=black][size=10.5pt]退出。因此,[/size][/color][color=black][size=10.5pt]END[/size][/color][color=black][size=10.5pt]块中的语句也会受管道的影响。[/size][/color][/align][align=left][color=black][size=10.5pt][font=Arial]●[/font]         [/size][/color][color=black][size=10.5pt]System[/size][/color][color=black][size=10.5pt]函数[/size][/color][/align][align=left][color=black][size=10.5pt]    Awk[/size][/color][color=black][size=10.5pt]的内置函数[/size][/color][color=black][size=10.5pt]system[/size][/color][color=black][size=10.5pt]以[/size][/color][color=black][size=10.5pt]UNIX/Linux[/size][/color][color=black][size=10.5pt]的系统命令作为参数,执行该命令并且将命令的退出状态返回给[/size][/color][color=black][size=10.5pt]awk[/size][/color][color=black][size=10.5pt]程序。它很像[/size][/color][color=black][size=10.5pt]C[/size][/color][color=black][size=10.5pt]语言的一个标准库函数,该函数恰巧也为[/size][/color][color=black][size=10.5pt]system()[/size][/color][color=black][size=10.5pt]。注意,作为参数的[/size][/color][color=black][size=10.5pt]UNIX/Linux[/size][/color][color=black][size=10.5pt]命令必须加双引号。[/size][/color][/align][align=left][table][tr][td=1,1,707][b][color=black][size=10.5pt]格式[/size][/color][/b]
[color=black][size=10.5pt]system[/size][/color][color=black][size=10.5pt](“[/size][/color][color=black][size=10.5pt]UNIX/Linux Command[/size][/color][color=black][size=10.5pt]”)[/size][/color]
[b][color=black][size=10.5pt]范例[/size][/color][/b][b][color=black][size=10.5pt] 3-30[/size][/color][/b]
[b][color=black][size=10.5pt]{[/size][/color][/b]
[b][color=black][size=10.5pt]system ( “cat ” $1)[/size][/color][/b]
[b][color=black][size=10.5pt]system ( “clear” )[/size][/color][/b]
[b][color=black][size=10.5pt]}[/size][/color][/b]
[color=black][size=10.5pt]([/size][/color][color=black][size=10.5pt]脚本[/size][/color][color=black][size=10.5pt])[/size][/color]
[color=black][size=10.5pt]### [/size][/color][color=black][size=10.5pt]解析[/size][/color][color=black][size=10.5pt] ###[/size][/color]
[color=black][size=10.5pt]System[/size][/color][color=black][size=10.5pt]函数以[/size][/color][color=black][size=10.5pt]cat[/size][/color][color=black][size=10.5pt]命令和输入文件的第[/size][/color][color=black][size=10.5pt]1[/size][/color][color=black][size=10.5pt]字段作为参数。[/size][/color][color=black][size=10.5pt]Cat[/size][/color][color=black][size=10.5pt]命令把第[/size][/color][color=black][size=10.5pt]1[/size][/color][color=black][size=10.5pt]个字段的值,即一个文件名,作为参数。接着以[/size][/color][color=black][size=10.5pt]clear[/size][/color][color=black][size=10.5pt]命令作为参数,[/size][/color][color=black][size=10.5pt]shell[/size][/color][color=black][size=10.5pt]将执行[/size][/color][color=black][size=10.5pt]clear[/size][/color][color=black][size=10.5pt]命令,清空屏幕。[/size][/color]
[/td][/tr][/table][/align]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.