shell脚本-awk

一、awk工作原理

二、awk的用法

 awk [option] ... ‘program‘ FILE ...
    1、program语句必须使用单引号!
    2、多条program语句使用用大括号包含起来,可以并列,可以嵌套
三、awk的常用参数

 -F   #指定分隔符

 示例:awk -F: ‘{print $1}‘ /etc/passwd     #输出/etc/passwd/文件中以:为分隔符的第一列

-v    #因为awk是一种语言编译器,能自己定义变量,同时也有自己的内置变量(与shell中的环  变量类似),所以要手动指定变量参数。

 示例:awk -v a="a+b" ‘{print a}‘ test.txt     #给a复制,打印a这个变量(在awk中调用变量不需要 加$符)

 

四、awk的语法格式

 1.print     #默认输出

  在awk中没有保存的命令,我们可以关联别的命令来保存awk的结果

  示例:awk ‘{a="a+b";print a}‘ test.txt | tee a.txt

  

 2.printf   #实现格式化输出

  示例:printf "%s是%d班学习最棒的",变量1,变量2

  (1)格式符

       %s   字符串
            %d  %i  数值
            %e  %E  科学计算数值
            %c  ACSii码值
            %f   浮点数
            %u  无符号整数
            %%  逃逸符 只显示 % 自己

    (2)修饰符

    默认为右对齐

    -  代表左对齐

    %5.4f    #5代表所占的位数,4代表所取的小数位

  3.变量

  变量分为内置变量和自定义变量

  内置变量是awk语言所默认支持的变量

  变量:

    FS      #定义输入分割符的变量

    OFS    #定义输出分隔符的变量

    NF       #定义行分隔以后的参数个数($NF 分隔以后最后的一列变量)

  示例:awk -v FS=":" ‘/\/bash$/{print $1,$NF}‘ /etc/passwd

 

NR  定义文件的行数,定义多个文件的文件的,行号叠加
            FNR  文件只计算自己的行号

  示例:awk ‘{print NR}‘ /etc/fstab /etc/passwd

 
            awk ‘{print FNR}‘ /etc/fstab /etc/passwd 

  

FILENAME 存储文件的名字

   示例:awk ‘{print FILENAME}‘ /etc/passwd    #把文件名打印N次,N文件的行数

  

  BEGIN{语句} 只在行循环开始时,执行一次;

  示例:awk ‘BEGIN{print FILENAME}‘ /etc/passwd

  

原文地址:https://www.cnblogs.com/hmm01031007/p/11402609.html

时间: 2024-10-29 19:10:29

shell脚本-awk的相关文章

shell 脚本awk的高级应用之

需求: 文本中第一列字符相等时,第二列相加 ,最后输出字符和最后的和(为了方便最后核对,都给了1) 文本如下: cat test.log abc 1 aaa 1 bbb 1 ddd 1 sss 1 iii 1 abc 1 sss 1 ddd 1 ddd 1 ddd 1 ddd 1 bbb 1 bbb 1 bbb 1 bbb 1 bbb 1 思路1: awk把第一列取出,然后排序sort,去重uniq,赋值给变量x,然后遍历x,从文本中grep,然后awk截取第二列并相加,这个思路需要多次awk,

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

sed && awk工具 及一些常用的shell脚本

(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出. 逐行读取文件内容存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.原文件爱你的内容并没有改变. sed '4,$d' test.in # 删除4~最后一行 sed '3q' test.in # 读到指定行之后退出 sed 's/public

shell脚本(正则表达+sed+awk)

一. 正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk

sed && awk工具 及一些经常使用的shell脚本

(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名称.然后在屏幕上查看输出. 逐行读取文件内容存储在暂时缓冲区中,称为"模式空间"(pattern space).接着用sed命令处理缓冲区的内容,处理完毕后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断反复,直到文件末尾.原文件爱你的内容并没有改变. sed '4,$d' test.in # 删除4~最后一行 sed '3q' test.in # 读到指定行之后退出 sed 's/publi

shell脚本---grep、awk、sed工具

grep:Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep是一种查找过滤工具,正则表达式在grep中用来查找符合模式的字符串. grep有三种变形: 1.grep:标准grep命令主要讨论此格式. 2.egrep:扩展grep,支持基本及扩展的正则表达式 3.fgrep:快速grep,允许查找字符串而不是一个模式.这里的快速并不是值速度快 格式 grep [options] 主要参数 [options]主要参数: -c:只输出匹配行

shell脚本之awk工具的使用

在Linux系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被我们运维人员广泛应用于shell脚本,完成各中自动化配置任务. awk可以直接处理目标文件,也可以和sed命令一样通过"-f"选项读取脚本对目标文件进行处理. awk的语法格式如下: sed命令常用于整行处理,而awk比较倾向于将一行分成多个字段,awk可以使用逻辑操作符"&&

Shell脚本三剑客(awk、sort、uniq)内含多个小Demo

awk工具 在Linux/UNIX系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以再无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell脚本,完成各种自动化配置任务. 1.awk常见用法:通常情况下 awk 所使用的命令格式如下所示,其中,单引号加上大括号"{}"用于设置对数据进行的处理动作.awk 可以直接处理目标文件,也可以通过"-f"读取脚本对目标文件进行处理. D