1。awk概述
- <李> awk是一种==编程语言==,主要用于在linux/unix下对==文本和数据==进行处理,是linux/unix下的一个工具。数据可以来自标准输入,一个或多个文件,或其它命令的输出。李> <李> awk的处理文本和数据的方式:<强>==逐行扫描==文件>强,默认从第一行到最后一行,寻找匹配的==特定模式==的行,并在这些行上进行你想要的操作。李> <李> awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是阿尔弗雷德·霍Brian Kernighan,彼得·温伯格。李> <李>
呆呆是awk的GNU版本,它提供了贝尔实验室和GNU的一些扩展。
李> <李>下面介绍的awk是以GNU的呆呆为例的,在linux系统中已把awk链接到呆呆的,所以下面全部以awk进行介绍。李>2。awk能干啥?
- <李> awk==用来处理文件和数据==的,是类unix下的一个工具,也是一种编程语言李> <李>可以用来==统计数据==,比如网站的访问量,访问的IP量等等李> <>李支持条件判断,支持和而循环李>
二,awk使用方式
1。==命令行模式使用==
1)语法结构
<代码类=" language-powershell "> awk选项& # 39;命令部分& # 39;文件名 特别说明: 引用壳变量需用双引号引起代码>
2)常用选项介绍
- <李>==- f==,定义字段分割符号,默认的分隔符是==空格==李> <李> - v,定义变量并赋值李>
3) <强>==& # 39;==>强命名部分说明<强>==& # 39;==强>
- <李>正则表达式,地址定位李>
<代码类=" language-powershell "> & # 39;/根/{awk语句}& # 39;,,,,,,sed中:& # 39;/根/p # 39; & # 39;NR==1, NR==5 {awk语句}& # 39;,,,,,,sed中:& # 39;1、5 p # 39; & # 39;/根/^,^ ftp/{awk语句}& # 39;,,sed中:& # 39;/根/^,^ ftp/p # 39; 代码>
- <李> {awk语句1 <强>==,==强> awk语句2 <强>==;==强>…李}>
<代码类=" language-powershell "> & # 39;{打印0美元;打印$ 1}& # 39;,,,sed中:& # 39;p # 39; & # 39;NR{打印$ 0}==5 & # 39;,,,,,,,sed中:& # 39;5 p # 39; 注:awk命令语句间用分号间隔代码>
- <李>开始…结束....李>
<代码类=" language-powershell "> & # 39;开始{awk语句},{处理中};结束{awk语句}& # 39; & # 39;开始{awk语句},{处理中}& # 39; & # 39;{处理中};结束{awk语句}& # 39;代码>
2。脚本模式使用
1)脚本编写
<代码类=" language-powershell "> # !/bin/awk - f,,,定义魔法字符 以下是awk引号里的命令清单,不要用引号保护命令,多个命令用分号间隔 开始{FS=?“} NR==1, NR==3{打印1美元“\ t" $ NF} …代码>
2)脚本执行
<代码类=" language-powershell ">方法1: awk选项- f awk的脚本文件,要处理的文本文件 awk - f awk。sh文件名 sed - f sed。sh -文件名 方法2: 。/awk的脚本文件(或者绝对路径),要处理的文本文件/awk。sh文件名/sed。sh文件名代码>
三,awk内部相关变量
变量变量说明备注==0==当前处理行的所有记录==\ 1美元\ $ 2 \ 3美元……\ $ n==文件中每行以==间隔符号==分割的不同字段awk - f: & # 39;{打印\ 1美元,\ $ 3}& # 39;==NF==当前记录的字段数(列数)awk - f: & # 39;{打印NF} & # 39; NF美元====最后一列美元(NF-1)表示倒数第二列==FNR/NR==行号==FS==定义间隔符& # 39;开始{FS=?“},{打印\ $ 1、$ 3}& # 39;==OFS==定义输出字段分隔符,==默认空格==& # 39;开始{OFS=癨 t"};打印\ $ 1,$ 3}& # 39;RS输入记录分割符,默认换行& # 39;开始{RS=癨 t"}, {print $ 0} & # 39;口服补液盐输出记录分割符,默认换行& # 39;开始{口服补液盐=癨 n \ n"},{打印\ $ 1、$ 3}& # 39;当文件名前输入的文件名1,==常用内置变量举例==
<代码类=" language-powershell "> # awk - f: & # 39;{打印$ 1、$ (NF-1)} & # 39;1.三种 # awk - f: & # 39;{打印$ 1、$ (NF-1)、NF美元,NF} & # 39;1.三种 # awk & # 39;/根/{打印$ 0}& # 39;1.三种 # awk & # 39;/根/& # 39;1.三种 # awk - f: & # 39;/根/{打印$ 1、$ NF} & # 39;1.三种 根/bin/bash # awk - f: & # 39;/根/{打印$ 0}& # 39;1.三种,,, 根:x: 0时:根:根://bin/bash # awk & # 39; NR==1, NR==5 & # 39;1.三种 # awk & # 39; NR==1, NR{打印$ 0}==5 & # 39;1.三种 # awk & # 39; NR==1, NR==5;/根/{打印$ 0}^ & # 39;1.三种 根:x: 0时:根:根://bin/bash 根:x: 0时:根:根://bin/bash 本:x: 1:1:本:/bin:/sbin/nologin 守护进程:x: 2:2:守护进程:/sbin/sbin/nologin adm: x: 3:4: adm:/var/adm/sbin/nologin lp: x: 4: lp:/var/spool/lpd:/sbin/nologinawk是什么? awk工作原理是什么?怎么用awk吗?