壳三剑客之awk(包括排序排序和uniq工具)

  

翱桥迫?椭產wk(包括一排序和uniq工具)"

  

壳三剑客之awk

  

在Linux/UNIX系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell脚本,完成各种自动化配置任务。

  

awk所使用的命令格式如下所示,其中,单引号加上大括号“{}”用于设置对数据进行的处理动作.awk可以直接处理目标文件,也可以通过“- f”读取脚本对目标文件进行处理。

  

awk工具命令格式

  
 <代码> awk选项的模式或条件{编辑指令}的文件1文件2 ?//过滤并输出文件符条件的内容
  awk - f脚本文件文件1文件2 ?//从脚本中调用编辑指令,过滤并输出内容
  7  
  

awk比较倾向于将一行分成多个”字段“然后再进行处理,且默认情况下字段的分隔符为空格或者tab键.awk执行结果可以通过打印的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“,和”,表示“与”、“| |”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/?,^分别表示加,减,乘,除,取余和乘方。
找出/etc/passwd的用户名,用户ID,组ID等列,执行以下awk命令即可。

  
 <代码>
  [root@localhost ~] # awk - f:“{打印$ 1、$ 3 $ 4}"/etc/passwd
  根0 0
  本1
  守护进程2 2
  adm 3 4
  lp 4 7
  同步5 0
  关闭6 0
  停止7 0
  邮件8 12
  运营商11 0
  游戏100
  ftp 14 50
  没人99 99
  systemd-network 192 192
  dbus 81 81
  polkitd 999 998
  abrt 173 173
  libstoragemgmt 998 996
  rpc 32 32
  colord 997 995
  saslauth 996 76
  rtkit 172 172
  脉搏171 171
  chrony 995 991
  rpcuser 29日29日
  nfsnobody 65534 65534
  国家结核控制规划38 38
  tss 59 59
  usbmuxd 113 113
  geoclue 994 989
  qemu 107 107
  radvd 75 75
  setroubleshoot 993 988
  sssd 992 987
  gdm 42 42
  gnome-initial-setup 991 986
  sshd 74 74
  avahi 70 70
  后缀89 89
  tcpdump 72 72
  陈1000 1000
   
  

awk从输入文件或者标准输入中读入信息,与sed一样,信息的读入也是逐行读取的。不同的是awk将文本文件中的一行视为一个记录,而将一行中的某一部分(列)作为记录中的一个字段(域)。为了操作这些不同的字段,awk借用壳中类似于位置变量的方法,用$ 1,$ 2,3美元?顺序地表示行(记录)中的不同字段。另外awk用$ 0表示整个行(记录)。不同的字段之间是通过指定的字符分隔.awk默认的分隔符是空格.awk允许在命令行中用“- f分隔符”的形式来指定分隔符。

  

awk包含几个特殊的内建变量(可直接用)如下所示:
(1) FS:指定每行文本的字段分隔符,默认为空格或制表位。
(2) NF:当前处理的行的字段个数。
(3) NR:当前处理的行的行号(序数)。
(4) $ 0:当前处理的行的整行内容。
(6)文件名:被处理的文件名。
(7) RS9:数据记录分隔,默认为\ n,即每行为一条记录。

  

一.awk用法

  

(1)输出所有内容,等同于猫chen.txt,

  
 <代码> [root@localhost ~] # awk chen.txt{打印$ 0}
  (root@localhost ~) # awk陈{打印}。txt//这条命令和上面一条是一样的效果
  # version=重击
  #系统授权信息
  aulth——enableshadow passalgo=sha512
  #使用光盘安装介质
  cdlrom。
  thethethe。 
  

(2)输出第1 ~ 3行内容

  
 <代码> [root@localhost ~] # awk的NR==1, NR==3{打印}’。txt//这条命令和下面命令是一样的效果
  (root@localhost ~) # awk”(NR>=1),和(NR<=3){打印}' chen.txt
  
  # version=重击
  #系统授权信息
  aulth——enableshadow passalgo=sha512  
  

(3)输出所有奇数行的内容

  
 <代码> [root@localhost ~] # awk”(NR % 2)==1{打印}’chen.txt
  用光盘安装介质
  光盘。
  thethethe。
  的
  THEASDHAS
  使用图形化安装。
  图形。
  最好的
  测试
  ASSDJFXYxyzC
  AxyzxyzxyzC
  键盘——vckeymap=cn xlayouts=癱n”
  系统语言 
  

(4)输出所有偶数行的内容

  
 <代码> [root@localhost ~] # awk”(NR % 2)==0{打印}’chen.txt
  使用图形化安装。
  图形。
  最好的
  测试
  ASSDJFXYxyzC
  AxyzxyzxyzC
  键盘——vckeymap=cn xlayouts=癱n”
  系统语言
  朗zh_CN.UTF-8
  
  网络信息
  网络——bootproto=dhcp设备=ens33——汽车——no-activate onboot=猧pv6=网络——主机名=localhost.localdomain
  
  根密码
  rootpw——iscrypted 6 $ L.egxzosoP/0 k9nj wna7vPXZjeH0jFcNZUymYKF8ySXq5HxQuvxTFxIpEAAxuDj7MQJtXBds5E0LxAftI1H5JbJuYpN44d5n6t1AZ美元。
  系统服务

壳三剑客之awk(包括排序排序和uniq工具)