AWK常见使用技巧

awk简单使用技巧

awk:报告生成器,格式化文本输出工具
语法格式:
awk [options] ‘script‘ file1,file2,...
awk [options] ‘PATTERN {action}‘ file1,file2,...
处理机制:
一次从文件中读取出来一行,按照特定分割符对其进行切片(默认空格)

程序结构:

  • 开始块(BEGIN BLOCK)
    BEGIN
    开始块就是awk程序启动时执行的代码部分(在处理输入流之前执行),并且在整个过程中只执行一次,一般情况下,我们在开始快中初始化一些变量
  • 主体块(BODY BLOCK)
    针对每一行输入的行都会执行一次主体部分的命令
  • 结束块(END BLOCK)
    END
    结束块是awk代码程序结束时执行的代码(在处理完输入流之后执行)
    例子:
    awk -F: ‘BEGIN{print "======start======"}{print $1,$NF}END{print "======end======"}‘ /etc/passwd
    awk -F: ‘{printf "username:%s bash:%s\n",$1,$NF}‘ /etc/passwd
    awk -F: ‘{printf "username:%-20s bash:%s\n",$1,$NF}‘ /etc/passwd
    
    awk -F: ‘{sum+=$3}END{print sum}‘ /etc/passwd
    
    awk ‘BEGIN{a=5;b=6;if(a == b) print "a == b";else print "a!=b"}‘

    模式匹配:
    模式匹配符:
    ~
    !~

        例子:
            awk -F: ‘$1~"root"{print $0}‘ /etc/passwd
    
            awk ‘/^$|^#/{print}‘ /etc/fstab
            awk ‘!/^$|^#/{print}‘ /etc/fstab
    
            awk -F: ‘$(NF-1)=="/var/ftp"{print $0}‘ /etc/passwd
    逻辑运算:
            awk ‘BEGIN{A=6;if(a >0 && a<=6)print "true";else print "false"}‘
            awk ‘BEGIN{A=6;if(a <0 || a<=6)print "true";else print "false"}‘

原文地址:https://blog.51cto.com/13777088/2416371

时间: 2024-08-03 22:20:51

AWK常见使用技巧的相关文章

软件保护技术--- 常见保护技巧

(1)序列号保护机制 数学算法一项都是密码加密的核心,但在一般的软件加密中,它似乎并不太为人们关心,因为大多数时候软件加密本身实现的都是一种编程的技巧.但近几年来随着序列号加密程序的普及,数学算法在软件加密中的比重似乎是越来越大了.     我们先来看看在网络上大行其道的序列号加密的工作原理.当用户从网络上下载某个shareware--共享软件后,一般都有使用时间上的限制,当过了共享软件的试用期后,你必须到这个软件的公司去注册后方能继续使用.注册过程一般是用户把自己的私人信息(一般主要指名字)连

awk 数据处理小技巧

进行数据分析或统计时,如果数据量较小,我们可以用awk快速处理,以下是一些小技巧 一.时间戳转换 日期转时间戳: date -d "20150315"  "+%s" 时间戳转日期:date -d @1426565428 "+%Y-%m-%d" 二.数据统计处理 随机取100个数awk 'BEGIN{srand()} {print rand()" "$1}' 2.txt | sort -k1 | head -100 取交集cat

均值不等式的常见使用技巧【初级、中级和高阶辅导】

常见的均值不等式的使用技巧 均值不等式这一素材,是高中数学中少见的几个需要同时验证成立的多条件素材.由于要多头验证,所以学生很不习惯,感觉很难掌握. 已知两个正数\(a,b\),则有(当且仅当\(a=b\)时取到等号),高考中重点考查这一部分:$ a+b\ge2\sqrt{ab}(a,b>0)$ 均值不等式的使用 前提条件: 正.定.等同时成立. 均值不等式中还有一个需要注意的地方:\(a,b\in R\) 如已知向量的内积\(\vec{a}\cdot\vec{b}=1,\)则有人这样做\(\v

awk常见基本使用

-F 指定分割符号 [[email protected] ~]# cat 1.txt a:b:c:d a1:b1:c1:d1 a2:b2:c2:d2 a_: :c:dddd [[email protected] ~]# awk -F ':' '{print $1}' 1.txt a a1 a2 a_ [[email protected] ~]# awk -F ':' '{print $2}' 1.txt b b1 b2 [[email protected] ~]# awk -F ':' '{pr

awk常用用法技巧举例

1.awk中的!a[$0]++与!a[$1]++的使用 !a[$0]++可以去除一行中重复的记录,例子如下: [[email protected] shell]# cat 1.txt  a a b b c c e f g a f [[email protected] shell]# awk '!a[$0]++' 1.txt  a b c e f g 解释:a[$0]就是以每一行内容为索引的一个hash表,当a[$0]未声明时,a[$0]为假,在未声明的情况下,进行一次a[$0]++后,a[$0]

日志统计中awk常见的运用

前言:首先awk是一门语言,其次跟其他语言相比,awk的优势是在文本处理.数值计算等方面,在我们日常的运维工作中,awk还有1个很重要的场景是配合sed.grep的使用,正是因为这些,awk是运维工程师最常用的工具之一,下面记录一下,awk在日志收集.统计场景的一些最常用的姿势. awk使用格式 awk [-F value] [-v var=value] 'program text' [files....]program text:     BEGIN {actions}/pattern/{ac

awk常见用法总结

split用法 echo "hello_xiao_lan" | awk '{split($0,b,"_");print b[3]}' //substr用法 awk '{a=substr($1,2);print a}' file2 //求均值 awk '{ sum = $1+sum ;count++ } END {print count, sum,sum/count}' aa.txt awk '{max=($2>max?$2:max)} END {print m

django QuerySet里那些常用又不常见的技巧

QuerySet 像Entry.Objects.all(),这些操作返回的是一个QuerySet对象,这个对象比较特别,并不是执行Objects.all(),或者filter之后就会与数据库交互,具体参看官方文档,与数据库交互的情况: https://docs.djangoproject.com/en/dev/ref/models/querysets/ Internally, a QuerySet can be constructed, filtered, sliced, and general

awk分隔符设置技巧

Question:awk -F"[[]]"和awk -F"[][]"分割出的串为什么不一样呢? 按理说 -F"[]",[]表示匹配括号中的任何一个字符,[]中间的字符应该是和顺序无关的,可是我实验的结果却不一样,这是为什么呢?加反斜线我也试过了,不影响结果. Answer: echo "1[2]3[4]" | awk -F"[\\\\[\\\\]]" '{print $1,$2,$3,$4}'