sed & awk 概述-程序员宅基地

技术标签: awk  

概述

一般情况下,从grep到sed和awk的学习过程是很自然的。sed和awk是一般用户、程序员和系统管理员们处理文本文件的有力工具。

sed的名字来源于其功能,它是个字符流编辑器(stream editor),可以很好地完成对多个文件的一系列编辑工作。

awk的名字来源于它的开发人Aho、Weinberger和Kernighan,它是一种程序设计语言,非常适合结构化数据的处理和格式化报表的生成。

sed 与 awk 共性

它们都使用相似的语法来调用。
它们都是面向字符流的,都是从文本文件中一次一行地读取输入,并将输出直接送到标准输出端。
它们都使用正则表达式进行模式匹配。
它们允许用户在脚本中指定指令。

它们有如此多的共同点,原因之是它们都起源于相同的行编辑器—ed。sed和awk的区别在于它们控制所做的工作时所用的指令不同。

语法

command [toptions] script_filename

输入:stdin 或 文件

输出:stdout 或 文件

禁止:输入输出是同一个文件

参数:sed和awk有区别,后面单独介绍

脚本:当命令较少时,可以单独输入,命令多时就需要写道脚本文件中。

sed & awk指令组成

工作流程

每个程序每次从输入文件中读取一个输入行,生成该输入行的备份,并且对该备份执行脚本中指定的指令。因此,对输入行所做的改动不会影响真正的输入文件。

当读取输入的每行时,程序读取脚本中的第一个指令并检测当前行的模式。如果没有匹配,这个过程被忽略并读取下一个指令。如果有一个匹配,那么执行过程中指定的一个或多个动作。读取所有的指令,而不只是读取与输入行匹配的第一条指令。
当所有可用指令被解释并应用于单个行后,sed输出该行并循环处理每个输入行。另一方面,awk不自动输出行,脚本中的指令控制awk最终所做的事情。
在sed和awk中过程的内容有很大不同。在sed中,过程由类似于行编辑器中使用的那些编辑命令组成。大部分命令由单个字母组成。
在awk中,过程由程序设计语句和函数组成。过程必须用大括号括起。

 

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/9185032.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33736649/article/details/94235524

智能推荐

WINDOWS系统文件详解 _windows服务器系统版本通过哪个文件来看?-程序员宅基地

文章浏览阅读906次。WINDOWS系统文件详解 详细的介绍了WINDOWS系统文件的用途A ↑ ACCESS.CHM - Windows帮助文件 ACCSTAT.EXE - 辅助状态指示器 ADVAPI32.DLL - 高级Win32应用程序接口 AHA154X.MPD - SCSI驱动程序 AM1500T.VXT - 网卡驱动程序 AM2100.DOS - 网卡驱动程序 APPSTART.ANI - 动画光_windows服务器系统版本通过哪个文件来看?

Kubernetes单节点搭建----flannel扁平化网络的搭建_你使用的 kubernetes 集群如何实现扁平化网络的?-程序员宅基地

文章浏览阅读587次。Kubernetes单节点搭建----flannel扁平化网络的搭建在上一期的博客中已经介绍了如何搭建单节点master的etcd,本次就来详细介绍一下该如何搭建flannel网络。flannel是建立在物理网络设备基础上的虚拟网络。所以容器通过虚拟出来的网络就可以进行通信。flannel网络是如何实现容器之间的通信的呢?1.首先node节点中的docker 0网卡会分配给每个pod一个I..._你使用的 kubernetes 集群如何实现扁平化网络的?

Qt for Android QML实现缩放、拖拽、长按效果简单示例_qml处理长按手势-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏9次。最近做项目需要用到在QML中实现长按事件 网络上几乎搜不到可以解决的办法 或者有方法但不实用 最后终于在http://bbs.csdn.net/topics/390120760 这篇帖子中找到了解决办法,在此感谢。 记录一下方法,以便之后使用。ApplicationWindow { visible: true width: 640 height: 480 ti_qml处理长按手势

Python获取秒级时间戳与毫秒级时间戳_pythonlocaltime获取毫秒时间-程序员宅基地

文章浏览阅读4.2w次,点赞15次,收藏76次。1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳import timeimport datetimet = time.time()print (t) #原始时间数据print (int(t)) #秒级时间戳print (int(round(t * 1000))) #毫秒级时间戳print (in..._pythonlocaltime获取毫秒时间

PAT (Basic Level) Practise 1001_输入,第一行是一个不超过100-程序员宅基地

文章浏览阅读362次。#include int main(int argc, char const *argv[]){int n;int cnt = 0;scanf("%d", &n);while(n!=1){if(n%2==0){n/=2;cnt++;}else{n=(3*n+1)/2;cnt++;}}printf("%d", cnt);re_输入,第一行是一个不超过100

nginx 如何安装 nginx_lua_module 模块 以及 echo-nginx-module 模块_nginx 单独安装 with-http_lua_module-程序员宅基地

文章浏览阅读2.8k次。ngx_lua_module 是一个nginx http模块,它把 lua 解析器内嵌到 nginx,用来解析并执行lua 语言编写的网页后台脚本。特性:支持Windows和Linux平台。支持高并发高性能。HTML网页中内嵌LUA脚本代码,类似于PHP。支持非阻塞的数据库操作,目前只支持MYSQL。支持异步的文件IO操作。支持非阻塞的SOCKET IO操作。下_nginx 单独安装 with-http_lua_module

随便推点

项目整合seata后出现NettyClientChannelManager : no available service ‘null‘ found, please make sure registr_若依 nettyclientchannelmanager-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏2次。项目整合seata后启动时出现NettyClientChannelManager : no available service 'null' found, please make sure registry config correct出现此错误的原因是未能根据file.conf中vgroupMapping对应的值找到对应的service,根据规范修改该配置。默认情况下查找到是${spring.applicaiton.name}-fescar-service-group..._若依 nettyclientchannelmanager

UIScrollView用法_uiscrollview updateframe-程序员宅基地

文章浏览阅读3w次,点赞2次,收藏25次。UIScrollView是iphone中的一个重要的视图,它提供了一个方法,让你在一个界面中看到所有的内容,从而不必担心因为屏幕的大小有限,必须翻到下一页进行阅览。确实对于用户来说是一个很好的体验。但是又是如何把所有的内容都加入到scrollview,是简单的addsubView。假如是这样,岂不是scrollView界面上要放置很多的图形,图片。移动设备的显示设备肯定不如PC,怎么可能放得下如此_uiscrollview updateframe

通过Azure Kinect DK 基于Ubuntu18.04实现室内三维重建(一)_kinect azure ubantu 三维重建-程序员宅基地

文章浏览阅读1.5k次。Github源码使用到的Github项目及链接:三维重建_kinect azure ubantu 三维重建

安装部署CAS Server_cas-server3.5.2搭建-程序员宅基地

文章浏览阅读6.7k次。参考文献:http://sucre.blog.51cto.com/1084905/6836241.安装部署CAS Server从官网下载CAS Server,今天发现CAS Server的官网居然被墙掉了,感叹天朝的神奇之处。后来从同事那里拷贝到了cas-server-3.5.2-release.zip。我将其发布到百度云盘上面:http://pan.baidu.com/s_cas-server3.5.2搭建

专科计算机文化基础题库-程序员宅基地

文章浏览阅读41次。如果使用普通的编辑方法,要制作上百份甚至上千份是一件很麻烦的事情,利用Word 2000(A)。A.单击“文件”菜单中“网页预览”命令 B.在页面视图下,使用“常用”工具栏上的“显示比例”按钮 C.使用“常用”工具栏上的“文档结构图”按钮 D.单击“文件”菜单中“打印预览”命令。2.表格在一页中太大或太小都将影响整个文档的美观,那就需要对表格进行调整,行(列)在手动拖动时,就会变得不均匀,Word 2003为我们提供了(A)功能,它能使不均匀的表格变得均匀、美观。

Python 之利用正则从字符串中提取数字_python用正则找到一个字符串的数字并返回字符串-程序员宅基地

文章浏览阅读4.4k次。对于一个字符串,比如‘asdfas24’ 'asda122ad24' '23asdas565sf54'要提取其中的数字,可以使用正则实现:import rere.findall('\d+', 'asd234sad565')返回的结果是一个列表,被其他字符间隔开多少组数字,这个列表就会包含几个元素,比如例子就会返回:['234', '565']..._python用正则找到一个字符串的数字并返回字符串