shell编程-awk命令详解(超详细)

文章目录

  • 前言
  • 一、awk命令介绍
    • 1. awk命令简介
    • 2. awk命令的基本语法
    • 3. 常用的awk命令选项
    • 4. 常用的awk内置变量
  • 二、awk命令示例用法
    • 1. 打印整行
    • 2. 打印特定字段
    • 3. 根据条件筛选行
    • 4. 自定义分隔符
    • 5. 从文件中读取`awk`脚本
  • 总结


前言

awk命令是一种强大的文本处理工具,可以帮助我们快速高效地处理文本数据。本文将介绍awk命令的基本语法和常用用法,帮助读者了解如何使用awk命令来处理文本数据。


一、awk命令介绍

1. awk命令简介

awk是一种强大的文本处理工具,用于从文本文件中提取和处理数据。它逐行读取文件中的数据,并根据指定的规则执行相应的操作。

2. awk命令的基本语法

awk '条件 { 动作 }' 文件

其中,条件是一个用于筛选行的表达式,动作是在满足条件的行上执行的操作。文件是要处理的输入文件。

3. 常用的awk命令选项

  • -F <分隔符>:指定输入字段的分隔符。
  • -v <变量名>=<值>:定义一个变量并赋值。
  • -f <脚本文件>:从指定的脚本文件中读取awk命令。

4. 常用的awk内置变量

  • NR:当前行的行号。
  • NF:当前行的字段数。
  • $0:当前行的完整内容。
  • $1$2$3等:当前行的第1、2、3等字段。

二、awk命令示例用法

以这个内容为示例讲解:
在这里插入图片描述

1. 打印整行

打印demo.txt文件的每一行数据。

awk '{ print }' demo.txt

awk '{ print $0 }' demo.txt

在这里插入图片描述

2. 打印特定字段

打印demo.txt文件每一行的第一和第三个字段,默认以空格分隔

awk '{ print $1, $3 }' demo.txt

在这里插入图片描述
打印demo.txt文件每一行最后一个字段

awk '{ print $NF }' demo.txt

在这里插入图片描述

3. 根据条件筛选行

打印demo.txt文件的第二行

awk 'NR == 2 { print }' demo.txt

在这里插入图片描述

4. 自定义分隔符

打印demo.txt文件的每一行的使用逗号分隔后的第三个字段

awk -F ',' '{ print $3 }' demo.txt

在这里插入图片描述

5. 从文件中读取awk脚本

从script.awk文件读取awk命令用于file.txt文件

awk -f script.awk file.txt

总结

awk命令是一种强大的文本处理工具,它可以根据指定的条件从文本文件中提取和处理数据。本文介绍了awk命令的基本语法和常用选项,并提供了一些示例用法,包括打印整行、打印特定字段、根据条件筛选行等。读者可以根据自己的需求和实际情况,灵活运用awk命令来处理文本数据,提高工作效率。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

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

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

相关文章

柔性数组(Flexible Array Members)在C语言中的应用

什么是柔性数组&#xff1f; 在C语言中&#xff0c;柔性数组&#xff08;Flexible Array Members&#xff0c;FAMs&#xff09;是C99标凈引入的一种便捷的数据结构&#xff0c;用于声明具有可变大小数组的结构体。柔性数组通常用于当结构体的大小在编译时不确定&#xff0c;但…

【C++】异常处理 ⑦ ( 异常类的继承层次结构 | 抛出 / 捕获 多个类型异常对象 | 抛出子类异常对象 / 捕获并处理 父类异常对象 )

文章目录 一、抛出 / 捕获 多个类型异常对象1、抛出 / 捕获 多个类型异常对象2、操作弊端3、完整代码示例 二、异常类的继承层次结构1、抛出子类异常对象 / 捕获并处理 父类异常对象2、完整代码示例 - 抛出子类异常对象 / 捕获并处理 父类异常对象 自定义的 异常类 , 可能存在 …

浅析SD-WAN技术如何加强企业网络安全

在这个数字化时代&#xff0c;企业组网的安全性已经成为许多企业所面临的一个重要挑战。特别是随着云计算、移动办公等新型信息技术的普及&#xff0c;企业网络的规模和复杂度不断增加&#xff0c;网络攻击和数据泄露的威胁也日益增加。因此&#xff0c;企业需要采取更加有效的…

西南科技大学C++程序设计实验三(类与对象二)

一、实验目的 1.理解类的复制构造函数的定义、说明与使用 2.扩充类的数据成员,为其增加静态数据成员、常(const)成员、其他类定义的成员等 3.理解组合类的相关知识点 二、实验任务 阅读分析、完善程序。下面是一个学生类student的定义,数据成员包括一个代表姓名字符个数的…

23.12.3日总结

饿了么项目进度 新建菜品的添加属性&#xff1a; 适应不同尺寸的媒体查询&#xff1a; 菜品详细页面&#xff1a; 项目上遇到的问题 媒体查询遇到的问题&#xff1a; 关于媒体查询不能生效的原因-CSDN博客 答辩总结 js中声明变量的关键字&#xff08;const&#xff0c;let…

c语言编程题经典100例——(61~65例)

1&#xff0c;写一个函数&#xff0c;判断一个数是否为正数。 #include <stdio.h> #include <stdbool.h> bool isPositive(int num) { if (num > 0) { return true; } else { return false; } }int main() { int num, cube; printf("请输入一个…

初始化 Clouder Manager 数据库报错Unable to find JDBC driver for database type: MySQL

CDH部署初始化 Clouder Manager 数据库报错。 解决方法&#xff1a; 把mysql驱动放到 /usr/share/java/目录下面(没有的新建&#xff09;&#xff0c;驱动名称也要修改为mysql-connector-java.jar 再次执行后成功&#xff1a; sudo /opt/cloudera/cm/schema/scm_prepare_data…

SpringBoot之自定义Starter

目录 一、自己的理解 1. 理解一 2. 理解二 二、自定义starter&#xff08;重点&#xff09; 三、以mybatis-spring-boot-starter为例进行分析 1. 写好自己的自动配置类逻辑 2. 创建自己的starter项目并引入自动配置类项目的依赖 3. 在其它项目中使用自定义的starter 一…

c++遍历算法的transform算法

transform 算法函数用于对指定范围内的元素进行一个操作&#xff0c;并将结果存储到另一个范围中。 template<class InputIterator, class OutputIterator, class UnaryOperation> OutputIterator transform(InputIterator first, InputIterator last, OutputIterator r…

共享智能指针shared_ptr

共享智能指针 在C中没有垃圾回收机制&#xff0c;必须自己释放分配的内存&#xff0c;否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针&#xff08;smart pointer&#xff09;。智能指针是存储指向动态分配&#xff08;堆&#xff09;对象指针的类&#xff0c;…

[ 云计算 | AWS 实践 ] 使用 Java 检查指定的密钥是否存在于给定的 Amazon S3 存储桶中

本文收录于【#云计算入门与实践 - AWS】专栏中&#xff0c;收录 AWS 入门与实践相关博文。 本文同步于个人公众号&#xff1a;【云计算洞察】 更多关于云计算技术内容敬请关注&#xff1a;CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文&#xff1a; [ 云计算 | …

C++ 智能指针和内存管理:使用指南和技巧

C是一门强大的编程语言&#xff0c;但是在内存管理方面却存在着一些问题。手动管理内存不仅费时费力&#xff0c;而且容易出错。因此&#xff0c;C中引入了智能指针这一概念&#xff0c;以更好地管理内存。 什么是智能指针&#xff1f; 在C中&#xff0c;内存的分配和释放都是…

AttributeError: ‘FieldInfo‘ object has no attribute ‘required‘.

诸神缄默不语-个人CSDN博文目录 这个bug是在安装doccano包之后&#xff0c;在运行transformers代码时出现的。 核心报错信息&#xff1a; RuntimeError: Failed to import transformers.models.bert.modeling_bert because of the following error (look up to see its trac…

Java 数组另类用法(字符来当数组下标使用)

一、原因 看力扣的时候发现有位大佬使用字符来当数组下标使用。 class Solution {public int lengthOfLongestSubstring(String s) {int result 0;int[] hash new int[130];int i 0;for(int j 0; j < s.length(); j) {while(hash[s.charAt(j)] > 0) {hash[s.charAt…

服务器入侵如何防护,业务被攻击如何处理,服务器安全防护方案

服务器是算是家用电脑的一种使用方法,主机不在用户家中,需要远程使用,在目前互联网时代占用很重要的位置&#xff0c;当然生活中也是应用广泛。服务器比普通计算机运行更快、负载更高、价格更贵。很多娱乐,工作都需要依靠服务器来运行整个体系&#xff0c;因此服务器的安全防护…

虚拟化逻辑架构: VM VirtualBox 指定6.0.24版本开启硬件辅助虚拟化功能

目录 一、实验 1.安装VM VirtualBox-6.0.24 2.安装VM VirtualBox-6.1.26 3.再次重新安装VM VirtualBox-6.0.24 二、问题 1.系统开机报错 2.Ubuntu系统无法自适应VM VirtualBox系统边框 3.VirtualBox如何开启无缝模式 3.Ubuntu如何查询软件是否已经安装 一、实验 1.安…

SCAU:主对角线上的元素之和

主对角线上的元素之和 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G;GCC 描述 输入一个3行4列的整数矩阵&#xff0c;计算并输出主对角线上的元素之和输入格式 3行4列整数矩阵输出格式 主对角线上的元素之和输入样例 1 2 3 4 5 6 7 8 9 10 11 12输出…

react二次封装Modal和Drawer组件

目录 react二次封装Modal和Drawer组件01&#xff1a;Modal组件01-1 BaseModal.jsx01-2 使用BaseModal组件01-3 效果 02&#xff1a;Drawer组件02-1 BaseDrawer.jsx组件02-2 使用BaseDrawer组件02-3效果 react二次封装Modal和Drawer组件 npm i styled-components 01&#xff1…

详细学习PyQt5中的多线程

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图&#xff08;Item View&#xff09; 快速弄懂Pyqt5的4种项目部件&#xff08;Item Widget&#xff09; 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…

【Shell3】日常巡检1

#!/usr/bin/env bash# --------------------------------------------------------------------------------- # 控制台颜色 BLACK"\033[1;30m" RED"\033[1;31m" GREEN"\033[1;32m" YELLOW"\033[1;33m" BLUE"\033[1;34m" PU…