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

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

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

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,

673,

585,

如果列分隔符不是空格或制表符(例如逗号),则可以在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

标题571

标题673

标题585

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

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

Gagaawk脚本,

普雷斯利,

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

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

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

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

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

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

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

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

Linux公社的RSS地址:

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

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

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

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

  1. Linux下C语言程序编写及执行和分步骤编译链接C源代码

    实验一:Linux下C语言程序编写及执行 //hello.c #include <stdio.h> int main(){int x = 1;int y = 2;int sum = x + ...

  2. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  3. Linux 下几款程序内存泄漏检查工具

    Linux 下几款程序内存泄漏检查工具 chenyoubing | 发布于 2016-07-23 10:08:09 | 阅读量 93 | 无 写这篇博客的原因呢是因为自己在编写基于Nginx磁盘缓存管 ...

  4. linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量

    背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题, ...

  5. linux下推荐应用程序列表

    为什么80%的码农都做不了架构师?>>>    linux下推荐应用程序列表 * 特殊软件: windows下访问ext2fs, ext3fs: http://www.ext2fs- ...

  6. Linux下的示例程序

    linux下的示例程序 #if 0 /*  * 1. 遍历目录-1  */ #include <stdio.h> #include <dirent.h> #include &l ...

  7. linux如何编译wine,利用winelib编译一个可在linux下运行的程序

    利用winelib编译一个可在linux下运行的程序 只是想既可以使用linux的api,又可以使用windows的api #include #include #include #include in ...

  8. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

  9. 在linux 下编译c程序时“ error:dereferencing pointer to incomplete type”的问题

    在linux 下编译c程序时经常会遇到" error:dereferencing pointer to incomplete type"的问题,该问题的原因是:结构体定义不规范造成 ...

  10. Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...

    centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...

最新文章

  1. springboot nacos配置中心_SpringBoot开发案例之Nacos配置管理中心
  2. 【CV】基于OpenCV的手掌检测和手指计数
  3. JDK 6中新增的Java Console类功能概览
  4. 瑞波基因币靠谱吗_Fil币小矿工: IPFS国家认可吗?IPFS是靠谱项目吗?
  5. 常见的几种数组排序方法
  6. asp远程访问sql server数据库
  7. win10自学c语言用什么软件,VC++6.0软件安装使用(win10可用),送给需要学c语言的你...
  8. 【气体扩散】基于改进的遗传算法求解高斯烟羽模型模拟气体扩散含Matlab代码
  9. 年龄、性别2022 cnn算法笔记
  10. sql和mysql 语法区别吗_sql和mysql语法有什么不同
  11. 博科光纤交换机配置及管理 CLI篇
  12. html批量打印保存到pdf,批量打印成PDF时不用每次点击保存位置的技巧
  13. 电力电子应用技术_应用于电气自动化驱动与控制的电力电子技术展示
  14. win10电脑不小心卸载的软件怎么恢复
  15. 利用python打开摄像头及颜色检测
  16. mysql生成18位纯数字id_MySQL实现注册时随机生成数字id,类似于注册qq时随机生成qq号...
  17. LR推导及其与SVM的区别
  18. 关联规则Apriori(python实现):Bakery Bussiness Model
  19. 2023 第一届“躺平杯”信息技术与网络安全入门赛
  20. C语言函数递归调用实验报告,C语言函数的递归和调用实例分析

热门文章

  1. linux火狐浏览器49.0安装教程,火狐浏览器Linux最新版下载
  2. elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API
  3. 18-Flutter移动电商实战-首页_火爆专区商品接口制作
  4. Android LinearLayout加载Fragment
  5. vscode设置折行字数
  6. mongoose 通过账号密码连接 Error: Password contains an illegal unescaped character
  7. php pdo更新,php - 使用PDO和MySQL更新查询
  8. 筛选法求1到100以内的素数
  9. myelicpes怎么导入PHP项目,利用PHP执行SQL文件,将SQL文件导入到数据库
  10. html表单不允许修改,[问题]如何在表单里定义(form)仅仅可读,不可修改的列?