目录

  • linux程序之awk(gakw)
    • gawk基础
      • 1) gawk程序的基本格式
      • 2) 从命令行读取程序脚本
      • 3) 使用数据字段变量
      • 4) 在程序脚本中使用多个命令
      • 5) 从文件中读取程序
      • 6) 在处理数据前后运行脚本

linux程序之awk(gakw)


gawk程序是Unix中的原始awk程序的GNU版本,gawk程序让流编辑迈上了一个新台阶,他提供了一种编程语言而不只是编辑命令.

gawk可以做的事:
1.定义变量来保存数据
2.使用算术和字符串操作符来处理数据
3.使用结构化编程概念(if-then语句和循环)来为数据处理增加处理逻辑;
通过提取数据文件中的数据元素,将其重新排列格式化,生成格式化报告


gawk基础

1) gawk程序的基本格式

gawk options program file

选项

-F fs                  指定行中划分数据字段的字段分隔符
-f file                 从指定的文件中读取程序
-v var=value    定义gawk程序中一个变量及其默认值
-mf N              指定要处理的数据文件中的最大字段数
-mr N              指定要处理的数据文件中的最大数据行
-W keyword    指定gawk的兼容模式或警告等级

2) 从命令行读取程序脚本

gawk程序脚本用一对花括号来定义.

gawk '{print "hello world!"}'  # 输入后什么都不会输出,应为没有指定文件名,如果你输入一行文本并按下回车,gawk会对这行文本运行一遍程序脚本,进而打印.
# hello world!

3) 使用数据字段变量

gawk的主要特性之一是其处理文本文件中数据的能力.他会自动给一行中的每个数据元素分配一个变量.
默认情况下:

$0  代表整个文本行
$1  代表文本行中的第1个数据字段
$2  代表文本行中的第2个数据字段
$n  代表文本行中的第n个数据字段

示例:
data.txt

this is line 1
this is line 2
this is line 3
this is line 4
this is line 5
gawk '{print $1}' data.txt
# 输出
this
this
this
this
this

如果要读取其他字段分隔符的文件,可以使用-F指定

gawk -F ':' '{print $1,$2}' /etc/passwd# 输出
root x
bin x
daemon x
adm x
lp x
sync x
shutdown x
halt x
mail x
operator x
games x
ftp x
nobody x
systemd-network x
dbus x
polkitd x
sshd x
postfix x
chrony x
ntp x
tcpdump x
nscd x
mysql x

4) 在程序脚本中使用多个命令

多个命令之间使用分号(;)分割.使用次提示符一次一行输入程序可以不用(>)

echo "my name is wyh" | gawk '{$4="wang"; print $0}'
# my name is wang

5) 从文件中读取程序

跟sed一样,gwak编辑器可以允许将程序存储到文件中,然后再在命令行中引用

scripts.gawk

{print $1 "'s home directory is " $6}
gawk -F ':' -f script.gawk /etc/passwd------输出
root's home directory is /root
bin's home directory is /bin
daemon's home directory is /sbin
adm's home directory is /var/adm
lp's home directory is /var/spool/lpd
sync's home directory is /sbin
shutdown's home directory is /sbin
halt's home directory is /sbin
mail's home directory is /var/spool/mail
operator's home directory is /root
games's home directory is /usr/games
ftp's home directory is /var/ftp
nobody's home directory is /
systemd-network's home directory is /
dbus's home directory is /
polkitd's home directory is /
sshd's home directory is /var/empty/sshd
postfix's home directory is /var/spool/postfix
chrony's home directory is /var/lib/chrony
ntp's home directory is /etc/ntp
tcpdump's home directory is /
nscd's home directory is /
mysql's home directory is /var/lib/mysql

可以在程序文件中指定多条命令,每条命令放一行,不需要分号,否则需要.
在程序中定义变量,赋值即定义,引用直接使用变量名
script3.gawk

{test ="'s home directory is"
print $1 text $6
}

6) 在处理数据前后运行脚本

gawk 'BEGIN {print "Start of file"}; {print $0}; END { print "End of file"}' data.txt----------输出
Start of file
this is line 1
this is line 2
this is line 3
this is line 4
this is line 5
End of file

linux命令之awk(gawk)相关推荐

  1. linux命令之awk终极系列

    一.awk功能特点 awk是一个非常重要的命令或者认为是一种语言.因为他可以做数学运算,流程控制语句,流控制,还有样式装入的功能.反正是非常强大.awk是三位创建者编写的.把awk定义为:样式扫描处理 ...

  2. Linux 命令 wc / awk

    WC:可以计算文件的Byte数.字数.或是列数 AWK:一种处理文本文件的语言,是一个强大的文本分析工具 1.查找.过滤当前文件夹 wc -l * 2.查找.过滤当前文件夹只有一行数据的文件,并显示文 ...

  3. linux命令之awk命令

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linu ...

  4. linux分配端口未抢占端口,Linux命令之awk:基础知识(一)

    语法形式: awk [options] 'script' var=value file(s) awk [options] -f scriptfile var=value file(s) 常用选项: - ...

  5. Linux命令之awk:高级输入输出(四)

    2019独角兽企业重金招聘Python工程师标准>>> 1.awk输出匹配行的上下行 输出匹配行的上一行语句 awk '/匹配/{print a}{a=$0}' [原理分析]: 这个 ...

  6. linux命令之awk

    文本处理命令 把前10行打印出来 . 打印20到30行

  7. Linux 命令(36)—— awk 命令

    1.命令简介 AWK 是文本处理语言,是一个强大的文本分析工具,是 Unix/Linux 环境中功能强大的数据处理引擎之一.数据可以来自标准输入(stdin).一个或多个文件或其它命令的输出.它支持用 ...

  8. linux中top工具,Linux命令工具 top详解

    Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...

  9. linux xxx命令,linux命令ps aux|grep xxx详解

    对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令. 使用该命令 可以确定有哪些进程正在运 ...

最新文章

  1. 云计算:存储之后,IT江湖之上的新大佬
  2. 谷歌Colab也搞“超级会员”,普通会员云GPU被降级,想用高端得加钱
  3. matlab中fdyn,Matlab的用法总结
  4. 有关网页抓取问题的一些经验总结 - passover【毕成功的博客】 - 51CTO技术博客
  5. python 多进程绑定端口_Python教程之创建多进程
  6. 几个不错的自己到的少的游戏站
  7. 【IT资讯】年薪170万码农征友,条件让网友炸锅……
  8. asp.net(c#)网页跳转七种方法小结
  9. AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
  10. SQLi LABS Less 26a 联合注入+布尔盲注
  11. [转]malloc的内存用free释放后为何系统回收不了
  12. 6种 分布式限流方案,我替你整理好了
  13. 用python进行文本分析_用Python分析文本文件
  14. android wifi直连共享文件,让Android支持AD-hoc方式连WIFI(笔记本直接用WIFI共享给手机)的方法...
  15. 评价模型——层次分析法
  16. 计算机游戏软件视频,电脑录制游戏视频软件哪个好,电脑游戏录制软件排行
  17. 用自己的电脑搭建Web服务器建网站
  18. 【软件工程导论】软件工程导论笔记
  19. Xcode6中如何添加pch文件
  20. 博通wifi 芯片配置工具wl 详解

热门文章

  1. 使用python简单的抓取网络小说
  2. 一文带你全面解析 Postman 工具的使用
  3. Vim修改vimrc一键编译运行后出现请按 ENTER 或其它命令继续
  4. Codeforces Round #566 (Div. 2)-E. Product Oriented Recurrence
  5. 基于采样的规划算法之RRT家族(四):Informed RRT*
  6. python爬虫之爬取百度翻译
  7. 动态设置video的宽高的方法,js设置和CSS设置
  8. 引导修复第一类:关于Windows的引导修复
  9. 计算机的历史——到底谁是第一台计算机?
  10. 【易通慧谷】全渠道趋势下的建材家居供应链变革