linux下awk命令用法,打印符合条件的列,求和

1.awk介绍

       linux下awk命令是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据进行分析时显得尤为强大。简单来说,awk命令就是将输出流逐行导入,以空格为默认分隔符将每行切片,再进行后续的处理。

      awk有3个不同的版本:awk、nawk和gawk,一般使用的是gawk,它是awk的GNU版本。

使用方法:

awk '/parttern/{action}' {filenames}
其中pattern是在数据中查找的内容,为正则表达式,需要使用/号括起来 。而action是指在匹配到内容时所执行的一系列命令。花括号{},不需要再程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。

以下是awk的命令帮助:

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:          GNU long options:
        -f progfile             --file=progfile
        -F fs                   --field-separator=fs
        -v var=val              --assign=var=val
        -m[fr] val
        -W compat               --compat
        -W copyleft             --copyleft
        -W copyright            --copyright
        -W dump-variables[=file]        --dump-variables[=file]
        -W exec=file            --exec=file
        -W gen-po               --gen-po
        -W help                 --help
        -W lint[=fatal]         --lint[=fatal]
        -W lint-old             --lint-old
        -W non-decimal-data     --non-decimal-data
        -W profile[=file]       --profile[=file]
        -W posix                --posix
        -W re-interval          --re-interval
        -W source=program-text  --source=program-text
        -W traditional          --traditional
        -W usage                --usage
        -W version              --version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
        gawk '{ sum += $1 }; END { print sum }' file
        gawk -F: '{ print $1 }' /etc/passwd


2.awk入门例子

1)使用正则匹配查找

ps -ef | awk '/^www/{print $0}' | tail -n 10
以上例子是查找www用户进程的最后10个进程

2)打印每一行中的第一列

cat /etc/passwd | awk -F ':'  '{print $1}'
以上例子是查找当前系统有多少个密码用户,-F是自定义分隔符,{}中是执行代码。awk的工作流程是这样的,读入有'\n'换行符分隔的一条记录,然后将记录按指定与分隔符划分区域(-F '[分隔符]'')。$0表示所有域,$1表示第一个域,如果不指定-F ,默认的分割符是空格或tab键。

3)列的元素求和

pmap -dq 32988 | awk -F ' ' 'BEGIN{sum=0}{if($6!~/anon/)sum+=$2}END{print sum}'
BEGIN接下来的语句,仅仅在开始的时候执行,同理END的语句,仅仅在结束的时候执行

中间的语句端,每一行均会执行。





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值