awk是什么? awk工作原理是什么?怎么用awk吗?

  

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/nologin 

awk是什么? awk工作原理是什么?怎么用awk吗?