shell 里 awk print 的用法详解

首先, 你需要先了解awk 的工作原理:
1。AWK读取输入文件一次一行。
2。对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。
3。如果没有模式匹配,将执行任何行动。
4。在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5。如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。
6。如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行。 7。空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8。中的每个行动的声明应该用分号分隔。让我们创建employee.txt文件,其中有

首先, 你需要先了解awk 的工作原理:

1。AWK读取输入文件一次一行。
2。对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。
3。如果没有模式匹配,将执行任何行动。
4。在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5。如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。
6。如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行。
7。空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8。中的每个行动的声明应该用分号分隔。

让我们创建employee.txt文件,其中有以下内容,这将是在使用
下文提到的例子。

$cat employee.txt
100 Thomas Manager Sales  $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA  Technology $6,000

Awk的范例1。 awk的默认行为

默认情况下的awk打印文件的每一行。

1234567
$ awk '{print;}' employee.txt
100 Thomas Manager Sales  $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA  Technology $6,000

在上面的例子中模式中没有给出。因此,是适用于所有的行。
action与任何参数的打印输出默认情况下,输出整行.

Awk的范例2。打印与模式匹配的行。

1234$ awk '/Thomas/

> /Nisha/' employee.txt
100 Thomas Manager Sales  $5,000
400 Nisha Manager Marketing $9,500

在上面的例子,它打印的“Thomas”或“Nisha”匹配的所有行。它有两种模式。

Awk的范例3。只打印特定的字段​​。

awk有内置的变量。对于每一个记录,即行,分隔空白字符分隔记录默认情况下,它存储在$ n个变量。如果该行有4个词,它会被存储在$ 1,2,2,2, 3和$ 4。 $0表示整行。 NF是一个内置变量,它代表这一行有多少个被分隔的域.

12345678910111213$ awk '{print $2,$5;}' employee.txt
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,000
$ awk '{print $2,$NF;}' employee.txt
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,000

Awk 范例4. 初始化and Final Action

Awk 两个重要的pattern , 由关键词 BEGIN and END 标识

Syntax:

BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }

#is for comments in Awk

这是一个例子

12345678910111213
$ awk 'BEGIN {print “Name\tDesignation\tDepartment\tSalary”;}

> {print $2,"\t",$3,"\t",$4,"\t",$NF;}
> END{print "Report Generated\n--------------";
> }' employee.txt
Name Designation Department Salary
Thomas Manager Sales   $5,000
Jason Developer Technology $5,500
Sanjay Sysadmin Technology $7,000
Nisha Manager Marketing $9,500
Randy DBA  Technology $6,000
Report Generated
--------------

在上面的例子,它打印出的报告和最后文件的标题

Awk的范例6。打印技术部门的雇员列表。

部门名称现在​​是第四个字段,所以需要检查与“Techology”的字符串,如果$4 匹配,则打印这一行
$ awk ‘$4 ~/Technology/' employee.txt
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
500 Randy DBA Technology $6,000

操作符〜是正则表达式比较。如果匹配的默认操作,即打印整行.

Awk的范例7。打印在技术部门的雇员人数

下面的例子, 检查 department 是否是Technology, 如果是 则Action中,只增加变量的计数. 这个变量在BEGIN 中被初始化为0

123456

$ awk 'BEGIN { count=0;}
$4 ~ /Technology/ { count++; }
END { print "Number of employees in Technology Dept =",count;}' employee.txt
Number of employees in Tehcnology Dept = 3

在END 中打印出这个变量,就是Technology 部门的员工数目

总结

到此这篇关于shell 里 awk print 的用法详解的文章就介绍到这了,更多相关shell awk print用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Shell正则表达式之grep、sed、awk实操笔记

    最近一直在研究shell脚本这块,刚好闲下来整了下自己手头上比较好的资料中的一些范例,以下是我整理的鸟哥私房菜里面正则表达式里面比较基础的一些语法详解,适合新手查阅. 首先先复制一段范例: 复制代码 代码如下: # vi regular_express.txt ------------------------------- "Open Source" is a good mechanism to develop programs. apple is my favorite food.

  • Shell脚本中awk指令的用法

    语法格式:awk [选项]  '指令'  操作文件 常用选项:-F  指定分隔符,分隔符用""引起来 -v:var=value在awk程序开始之前指定一个值valu给变量var,这些变量值用于awk程序的BEGIN快 -f:后面跟一个保存了awk程序的文件,代替在命令行指定awk程序 实例1:在命令行直接输入awk指令 awk '{print}' 1.txt #逐行读取文件1.txt内容并打印 awk '{print $0}' 1.txt #逐行读取文件内容,并打印该行,$0保存的是当

  • shell学习之printf命令格式化输出语句

    简介 printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同. 注意:printf 由 POSIX 标准所定义,移植性要比 echo 好. 如同 echo 命令,printf 命令也可以输出简单的字符串: $printf "Hello, Shell\n" Hello, Shell $ printf 不像 echo 那样会自动换行,必须显式添加换行符(\n). printf 命令的语法: printf  form

  • Linux shell中的printf的详细用法

    Linux shell中的printf的详细用法 一 语法 printf '输出类型输出格式' 输出内容 输出类型: %ns:输出字符串.n是数字指代输出几个字符. %ni:输出整数.n是数字指代输出几个数字. %m.n:输出浮点数.m和n是数字,指代输出的整数位数和小数 如%8.2代表共输出8位数,其中2位是小数,6位是整数. 输出格式:  二 实战 [root@localhost ~]# printf %s 1 2 3 4 5 6 123456[root@localhost ~]# prin

  • shell脚本之正则表达式、grep、sed、awk

    --正则-- 基础正则 ^word     ##搜索以word开头的 vi/vim中 ^ 一行的开头 word$     ##搜索以word结尾的 vi/vim中 $ 一行的结尾 ^$        ##表示空行 .         ##代表且只能代表任意一个字符 \         ##例:\. 只代表点本身,转义符号,让有特殊身份意义的字符,脱掉马甲,还原 \n        ##换行符 \r        ##匹配回车 \w         ##匹配任意一个字符和数字 *        

  • shell 里 awk print 的用法详解

    首先, 你需要先了解awk 的工作原理: 1.AWK读取输入文件一次一行. 2.对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作. 3.如果没有模式匹配,将执行任何行动. 4.在上面的语法,无论是搜索模式,或行动是可选的,但不能同时. 5.如果没有给出搜索模式,然后awk要执行每一行输入给定的行动. 6.如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行. 7.空出的任何行动括号什么都不做.它不会执行默认的打印操作. 8.中的每个行动的声明应该用分号分隔.让我们创建emplo

  • shell中的for循环用法详解

    for 命令: for i in 的各种用法 : for i in "file1" "file2" "file3" for i in /boot/* for i in /etc/*.conf for i in $(seq -w 10) -->等宽的01-10 for i in {1-10} for i in $( ls ) for I in $(< file) for i in "$@" -->取所有位置参数

  • 对numpy.append()里的axis的用法详解

    如下所示: def append(arr, values, axis=None): """ Append values to the end of an array. Parameters ---------- arr : array_like Values are appended to a copy of this array. values : array_like These values are appended to a copy of `arr`. It mus

  • shell中set指令的用法详解

    语法 set [-可选参数] [-o 选项] 功能说明 set 指令可根据不同的需求来设置当前所使用 shell 的执行方式,同时也可以用来设置或显示 shell 变量的值.当指定某个单一的选项时将设置 shell 的常用特性,如果在选项后使用 -o 参数将打开特殊特性,若是 +o 将关闭相应的特殊特性.而不带任何参数的 set 指令将显示当前 shell 中的全部变量,且总是返回 true,除非遇到非法的选项. 参数说明 可选参数及其说明如下: 参数 说明 -a 标示已修改的变量,以供输出至环

  • shell脚本之sed详细用法详解

    目录 sed的作用 sed使用方法介绍 命令行格式 举例说明 对文件进行增.删.改.查操作 增加文件内容 对文件进行搜索替换操作 其他命令 其他选项 sed结合正则使用 补充扩展总结 总结 sed的作用 sed是Stream Editor(流编辑器)的缩写,简称流编辑器:用来处理文件的 sed是一行一行读取文件内容并按照要求进行处理,把处理后的结果输出到屏幕 首先sed读取文件中的一行内容,把其保存在一个临时缓存区中(也称为模式空间) 然后根据需求处理临时缓冲区中的行,完成后把该行发送到屏幕上

  • Linux中 sed 和 awk的用法详解

    sed用法: sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] 'command' 输入文本 常用选项: -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来. -e∶直接在指令列模式上进行 sed 的

  • linux shell脚本对未定义变量的判断以及if的用法详解

    环境 操作系统:win10 虚拟机:centos7 需求 因为公司有个脚本,是用于启动程序的,但是每次启动都要手动做如下两个操作: ①先查询之前的进程ID ②杀死之前的,在启动新了 时间长了弄得我很烦躁,所以就琢磨下,把上面的的操作一起整合到启动脚本里去. 最开始我是这么写的: #!/bin/bash echo "ggjob-search..." pid=`ps -ef|grep -w ggjob-search|grep -v grep|grep -v ggjob-search.sh|

  • Linux Shell Map的用法详解

    Map定义: 在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明 方式1: declare -A myMap myMap["my03"]="03" 方式2: declare -A myMap=(["my01"]="01" ["my02"]="02") myMap["my03"]="03" myMap["my04&qu

  • Spring AOP里的静态代理和动态代理用法详解

    什么是代理? 为某一个对象创建一个代理对象,程序不直接用原本的对象,而是由创建的代理对象来控制原对象,通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间 什么是静态代理? 由程序创建或特定工具自动生成源代码,在程序运行前,代理类的.class文件就已经存在 通过将目标类与代理类实现同一个接口,让代理类持有真实类对象,然后在代理类方法中调用真实类方法,在调用真实类方法的前后添加我们所需要的功能扩展代码来达到增强的目的. 优点

  • shell脚本--sed的用法详解

    sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过. sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增.删.改.查等操作,支持按行.按字段.按正则匹配文本内容,灵活方便,特别适合于大文件的编辑.本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例. 1.sed的使用方法,调用sed 命令的语法有两种: 一.在命令行指定sed指令对文本进行处理:sed +选项  '指令' 文件 二.先将sed指令保存到文件中,将该文件

随机推荐