美文网首页
AWK命令来筛选需要的数据

AWK命令来筛选需要的数据

作者: greye | 来源:发表于2019-07-19 17:44 被阅读0次

1、了解 $0 的意义,$0 等于是输入。

 XX@MacPro  ~  df -h |awk '{print $0}'
Filesystem      Size   Used  Avail Capacity iused               ifree %iused  Mounted on
/dev/disk2s1   1.0Ti  275Gi  759Gi    27% 1962828 9223372036852812979    0%   /
devfs          340Ki  340Ki    0Bi   100%    1179                   0  100%   /dev
/dev/disk2s4   1.0Ti  2.0Gi  759Gi     1%       1 9223372036854775806    0%   /private/var/vm
map -hosts       0Bi    0Bi    0Bi   100%       0                   0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%       0                   0  100%   /home
/dev/disk3s1    14Gi  9.3Gi  5.2Gi    65%       0                   0  100%   /Volumes/KINGSTON

2、了解 $2 的意义,$2 等于是每一行的第二个元素

 XX@MacPro  ~  df -h |awk '{print $2}'
Size
1.0Ti
340Ki
1.0Ti
-hosts
auto_home
14Gi

3、awk命令中所有“动作”,都必须在 { } 内。

通常awk的命令格式是:awk '脚本’ 输入文件
再更进一步具体化:awk '模式 {动作}’ 输入文件
或者和其他命令组合:其他命令 | awk '模式 {动作}’

 XX@MacPro  ~  df -h |awk 'print $2'
awk: 命令行:1: print $2
awk: 命令行:1: ^ syntax error

4、awk命令匹配符合模式的行

 ✘ XX@MacPro  ~  df -h |awk '/dev/'
/dev/disk2s1   1.0Ti  275Gi  759Gi    27% 1962828 9223372036852812979    0%   /
devfs          340Ki  340Ki    0Bi   100%    1179                   0  100%   /dev
/dev/disk2s4   1.0Ti  2.0Gi  759Gi     1%       1 9223372036854775806    0%   /private/var/vm
/dev/disk3s1    14Gi  9.3Gi  5.2Gi    65%       0                   0  100%   /Volumes/KINGSTON

注意:所有正则表达式都需要在/ /内,即:/正则表达式/,否则会如下图出错。

 ✘ XX@MacPro  ~  df -h |awk '/dev'
awk: 命令行:1: /dev
awk: 命令行:1:  ^ 未终止的正则表达式

注意:想要在规则中匹配“/”,需要进行转义。


 XX@MacPro  ~  df -h |awk '//dev/'
awk: 命令行:2: //dev/
awk: 命令行:2:       ^ 未预期的新行或字符串结束
 ✘ XX@MacPro  ~  df -h |awk '/\/dev/'
/dev/disk2s1   1.0Ti  275Gi  759Gi    27% 1962828 9223372036852812979    0%   /
devfs          340Ki  340Ki    0Bi   100%    1179                   0  100%   /dev
/dev/disk2s4   1.0Ti  2.0Gi  759Gi     1%       1 9223372036854775806    0%   /private/var/vm
/dev/disk3s1    14Gi  9.3Gi  5.2Gi    65%       0                   0  100%   /Volumes/KINGSTON

注意:awk命令的“模式”与“动作”都被包裹在一组单引号内不可用两组。否则错误如下:

 XX@MacPro  ~  df -h |awk '/m$/' '{print $1}'
awk: 致命错误:无法以读模式打开文件“{print $1}”(No such file or directory)
 ✘ XX@MacPro  ~  df -h |awk '/m$/ {print $1}'
/dev/disk2s4

下面是在使用AWK命令的“范围模式”,开头匹配/dev/, 结束匹配/m$/。

XX@MacPro  ~  df -h |awk '/dev/,/m$/ {print $1}'
/dev/disk2s1
devfs
/dev/disk2s4
/dev/disk3s1

5、AWK命令匹配多个模式条件。

注意:awk支持的逻辑表达式AND(&&),OR(||)等等。

XX@MacPro  ~  df -h |awk '/dev/AND/m$/ {print $1}'
awk: 命令行:1: /dev/AND/m$/ {print $1}
awk: 命令行:1:             ^ 未终止的正则表达式

 ✘ XX@MacPro  ~  df -h |awk '/dev/&/m$/ {print $1}'
awk: 命令行:1: /dev/&/m$/ {print $1}
awk: 命令行:1:      ^ syntax error

 ✘ XX@MacPro  ~  df -h |awk '/dev&m$/ {print $1}'
 XX@MacPro  ~  df -h |awk '/dev|m$/ {print $1}'
/dev/disk2s1
devfs
/dev/disk2s4
/dev/disk3s1

XX@MacPro  ~  df -h |awk '/dev&&m/ {print $1}'
XX@MacPro  ~  df -h |awk '/dev/ {print $1}'
/dev/disk2s1
devfs
/dev/disk2s4
/dev/disk3s1

XX@MacPro  ~  df -h |awk '/dev/&&/m$/ {print $1}'
/dev/disk2s4
XX@MacPro  ~  df -h |awk '/dev/&&/m$/ '
/dev/disk2s4   1.0Ti  2.0Gi  759Gi     1%       1 9223372036854775806    0%   /private/var/vm

6、连续多个动作的连接

1)使用连续连个多个{ }:{A动作} {B动作}。
2)使用在{ }内分号隔离:{A动作; B动作}。

  XX@MacminiPro  ~  df -h |awk '{print $1} {print $2}'
Filesystem
Size
/dev/disk2s1
1.0Ti
devfs
340Ki
/dev/disk2s4
1.0Ti
map
-hosts
map
auto_home
/dev/disk3s1
14Gi

 XX@MacminiPro  ~  df -h |awk '{print $1 ;print $2}'
Filesystem
Size
/dev/disk2s1
1.0Ti
devfs
340Ki
/dev/disk2s4
1.0Ti
map
-hosts
map
auto_home
/dev/disk3s1
14Gi

注意:END这个不理解下次继续更新。。

 XX@MacminiPro  ~  df -h |awk '{print $1} END {print $2}'
Filesystem
/dev/disk2s1
devfs
/dev/disk2s4
map
map
/dev/disk3s1
14Gi

相关文章

  • AWK命令来筛选需要的数据

    1、了解 $0 的意义,$0 等于是输入。 2、了解 $2 的意义,$2 等于是每一行的第二个元素。 3、awk命...

  • awk 命令

    awk 命令 awk 是用来管理数据和生成报告的脚本语言,awk命令行编程不需要编译,允许用户使用变量,数学方法,...

  • Linux之 小技巧

    Ctrl+u 删除光标前命令Ctrl+k删除光标后命令 AWK 命令(用来整理数据) 打印文本里的第一列awk '...

  • AWK 命令详解

    AWK 命令详解 除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk。...

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • awk命令的使用

    awk命令的使用 awk命令格式awk '条件1{动作1} 条件2{动作2}…' 文件名 在介绍awk命令的用法前...

  • awk工具

    9.6 awk命令(上) awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准...

  • dplyr advanced: 数据筛选(filter)

    我们在进行数据处理的时候经常需要经常需要对数据进行筛选,在dplyr我们可以使用filter()来进行数据的筛选 ...

  • shell编程之awk详解

    awk命令 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdi...

  • linux学习笔记4-文本操作(3)

    awk命令 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdi...

网友评论

      本文标题:AWK命令来筛选需要的数据

      本文链接:https://www.haomeiwen.com/subject/shyslctx.html