linux下的awk程序在哪里编写,如何编写awk命令和脚本

02c8c0e0a09df1f97bd387f1d530469a.png

awk命令是处理或分析文本文件(尤其是按行和列组织的数据文件)的强大方法.

您可以从命令行运行简单的awk命令. 应该将更复杂的任务作为awk程序(所谓的awk脚本)写入文件.

0d84ef3017f813781a9b38c2086a4319.png

awk命令的基本格式如下:

awk'pattern {action}'输入文件>输出文件

这意味着: 占用输入文件的每一行;如果该行包含模式,则对该行应用操作,然后将结果行写入输出文件. 如果省略此模式,则该操作将应用于所有行. 例如:

linuxidc @ Ubuntu: 〜/ linuxidc.com $ awk'{打印$ 5}'linuxidc.txt> linuxmi.txt

此语句获取每行第五列中的元素,并将它们作为一行写入输出文件“ output.txt”. 变量“ $ 4”指的是第四列. 同样,您可以使用$ 1,$ 2,$ 3等访问第一,第二和第三列. 默认情况下,假定列由空格或制表符(所谓的空格)分隔. 因此,如果输入文件“ linuxidc.txt”包含以下行:

1,linuxidc com,Title 599,价格$ 9.30

2,ninhao linuxidc,标题761,价格为5.90美元

3,naike xie,第880名,价格9.10美元

4,Lady Gaga,标题198,价格1.30美元

5,约翰尼·卡什(Johnny Cash),标题582,价格$ 6.50

082837466.png

6,Elvis Presley,Title 370,价格$ 9.30

7,约翰·列侬(John Lennon),标题571,价格$ 8.90

8,迈克尔·杰克逊(Michael Jackson),标题673,价格7.50美元

9,linuxidc com,Title 585,价格$ 1.80

然后,该命令将以下行写入输出文件“ linuxmi.txt”:

linuxidc @ ubuntu: 〜/ linuxidc.com $ cat linuxmi.txt

599,

761,

880,

198,

582,

370,

571,

HDA0000698640960000011.gif

673,

585,

25c2e06015b36991925cb1e02c62a434.png

如果列分隔符不是空格或制表符(例如逗号),则可以在awk语句中如下指定:

linuxidc @ ubuntu: 〜/ linuxidc.com $ awk -Fawk脚本,'{print $ 3}'linuxidc.txt> linuxmi.txt

如果认为各列之间用逗号分隔,则将从每行的第三列中选择元素. 因此,在这种情况下,输出将是:

linuxidc @ ubuntu: 〜/ linuxidc.com $ cat linuxmi.txt

599标题

761标题

标题880

标题198

标题582

标题370

162431104.png

标题571

标题673

标题585

99992befdcd3fd96b9731165f00b1235.png

括号内的语句列表('{','}')称为块. 如果将条件表达式放在块的前面,则仅在条件为真时才执行块中的语句.

awk'$ 7 ==“ \ $ 7.30” {print $ 3}'linuxidc.txt

在这种情况下,条件是$ 7 ==“ \ $ 7.30”,这意味着列7中的元素等于$ 7.30. 美元符号前的反斜杠用于防止系统将$ 7解释为变量,而是从字面上理解美元符号.

因此,此awk语句在每行的第3列中打印出元素,在第7列中打印出“ $ 7.30”.

您还可以使用正则表达式作为条件. 例如:

linuxidc @ ubuntu: 〜/ linuxidc.com $ awk'$ 7 ==“ \ $ 7.30” {print $ 3}'linuxidc.txt

两个斜杠('/')之间的字符串是一个正则表达式. 在这种情况下,它只是字符串“ 30”. 这意味着,如果一行包含字符串“ 30”,则系统将在该行的第三列中打印该元素. 上例中的输出为:

linuxidc @ ubuntu: 〜/ linuxidc.com $ awk'/ 30 / {print $ 3}'linuxidc.txt

com

c0b8dbb34981d428f9fd8f41fe64fa6f.png

Gagaawk脚本,

普雷斯利,

8f50f6d48ea8ab5c124c35e9119eeb6f.png

如果表元素是数字,则awk可以对它们运行计算,如以下示例所示:

linuxidc @ ubuntu: 〜/ linuxidc.com $ awk'{print($ 2 * $ 3)+ $ 7}'linuxidc.com.txt

f93fda169bf4e902aeb6f3e3c6a60cbd.png

除了访问当前行元素的变量($ 1,$ 2等)之外,整行(行)还具有变量$ 0,而字段数则具有变量NF.

您还可以在此示例中定义新变量:

linuxidc @ ubuntu: 〜/ linuxidc.com $ awk'{sum = 0;为(col = 1; col

053b4b9b17d9a1919380beaa9a794777.png

这将计算并打印每行中所有元素的总和.

awk语句通常与sed命令结合使用.

有关Linux命令的更多信息,请参考Linux Command Collection的特殊页面

Linux公社的RSS地址:

本文将永久更新链接地址:

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-287526-1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TreeSet类的排序

TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。 1、自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。(比较的前提&…

linux边看系统信息,Linux查看系统信息大全[备忘]

系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv # 列出所有USB设备# lsmod # 列出加载的内核模块# env # 查看环境变量资源# fre…

关于存储的基本知识:

flash:Flash,是内存(Memory)的一种,但兼有RAM和ROM, 分为NOR Flash 和 NADN Flash两种不同的flash,分别用在不同的场合,不同于SRAM(EEPROM),FLASH的操作是靠一系列指令完成,以扇区sector进行整体…

移植linux内核-映像文件,移植Linux内核-映像文件

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://tigerwang202.blogbus.com/logs/43927976.html首先从Blackfin uClinux网站下载最新版uClinux内核。http://blackfin.uclinux.org/gf/project/uclinux-dist/frs/上述地址除了提供内核源代码外…

linux意想不到题4

101 linux系统调优 答:(1)硬件:大内存、固态硬盘或者RAID阵列、CPU核数、服务器产商 (2)某个服务的编译安装,启用或禁用的一些选项 (3)服务的配置文件,参数的…

linux中用截取一些信息,Linux如何使用cut命令截取文件信息

在Linux众多命令中,cut命令可用来截取文件信息,截取Linux字符串,下面将针对cut命令的用法做个详细介绍,感兴趣的朋友可以来学习下。cut命令有截取的意思,可从linux文件或者标准输入中读取内容并纵向截取所需信息列的一…

l启动进程 linux,《日子》. linux 查看进程启动路径

在linux下查看进程大家都会想到用 ps -ef|grep XXX可是看到的不是全路径,怎么看全路径呢?每个进程启动之后在 /proc下面有一个于pid对应的路径例如:ps -ef|grep python显示:oracle 4431 4366 0 18:56 pts/2 00:00:00 python Serve…

django_4:数据库1——django操作数据库

创建数据库记录(插入) 使用python3 manage.py shell(python3亲测好使) ipython3 manage.py shell(亲测不好使) 方式一、 [rootcentos7 csvt03]# python3 manage.py shell Python 3.5.2 (default, May 9 2017, 23:04:15) Type copyright, credits or li…

linux uuid错误,Linux 错误:fatal error: uuid/uuid.h: No such file or directory

重新configure 后,出现别的错误:fatal error: uuid/uuid.h: No such file or directory这是因为没有uuid库和头文件,需要安装e2fsprogs,试过yum命令安装,问题没解决,需要从源码编译wget http://downloads.sourceforge.…

uva 11054

据说这叫扫描法,,,,感觉就是脑洞啊,,,,,反正从最左端开始,如果有酒就往后运,需要酒就运负的,就是相当于后面有酒了就运回来。。。 #in…

fastdfs集群搭建2

五.在各个存储节点安装nginx 1.上传 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src,解压 2.修改 fastdfs-nginx-module 的 config 配置文件 将CORE_INCS"$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" 修改为:CORE_INC…

201521123057 《Java程序设计》第12周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容。 2. 书面作业 1.字符流与文本文件:使用 PrintWriter(写),BufferedReader(读) 将Student对象(属性:int id, String name,int age,doub…

linux 管道文件上机总结,[转载]LINUX 管道 fifo 等总结

Linux进程通信:命名管道FIFO小结Linux下进程之间通信可以用命名管道FIFO完成。命名管道是一种特殊类型的文件,因为Linux中所有事物都是文件,它在文件系统中以文件名的形式存在。在程序中,我们可以使用两个不同的函数调用来建立管道…

tomcat 下载

点project 关闭防火墙才可以让别人访问自己 转载于:https://www.cnblogs.com/feathe/p/6853491.html

linux消息框架,远程处理器消息框架 - 基于Linux 简化 AMP 配置使其更方便更动态地分配资源...

核心的 rpmsg 框架起到开关的作用,根据消息中包含的目的地址将消息传送到相应端点。由于消息报头包含源地址,因此可在不同处理器之间建立专用连接。命名服务处理器可通过向 rpmsg 框架的命名服务发送消息,以动态宣布特定服务。命名服务功能本…

洛谷 P3366 【模板】最小生成树

题目描述 如题&#xff0c;给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出orz 输入输出格式 输入格式&#xff1a;第一行包含两个整数N、M&#xff0c;表示该图共有N个结点和M条无向边。&#xff08;N<5000&#xff0c;M<200000…

陇东学院c语言程序设计,C语言程序设计

spContent《C语言程序设计》是高等学校本科教育普遍开设的一门课程&#xff0c;是广大程序设计语言学习者首选的入门课程。本课程立足于C语言基础知识的讲解&#xff0c;讲授中引入大量实例&#xff0c;突出重点&#xff0c;剖析难点&#xff0c;培养学生结构化程序设计的思想&…

关于android:windowNoTitle不起作用的解决办法

今天测试一个新功能的时候&#xff0c;在styles.xml设置<item name"android:windowNoTitle">true</item>并没有生效&#xff0c;当时很奇怪&#xff0c;以前的项目都这么设置的&#xff0c;并且都能生效&#xff0c;后来发现MainActivity继承的是AppComp…

jQuery笔记——选择器

jQuery 最核心的组成部分就是&#xff1a;选择器引擎。它继承了 CSS 的语法&#xff0c;可以对 DOM 元 素的标签名、属性名、状态等进行快速准确的选择&#xff0c;并且不必担心浏览器的兼容性 常规选择器 根据id选择元素就是使用#&#xff0c;还有两种其他选择元素的方式&…

c语言实现NRZ编码,CSC1001-课后笔记

前言&#xff1a;为什么编写此文1. 根据费曼的学习方法Pretend to teach your topic to a classroom. Make sure youre able to explain the topic in simple terms. 假装你在教室里向学生解释这个主题&#xff0c;用尽量简单的词汇去描述它&#xff0c;力求学生能听懂。(听众…