未加星标

sed和awk命令浅析

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二05 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
1. 介绍

这两个命令在使用linux的过程中比较常用,这里小做总结,对其核心用法进行记录。

2. sed

sed命令主要用于对行的处理。可以对制定的行进行编辑(增加删除内容)、替换。

2.1 基本使用说明

其man文件的说明如下:

[[email protected] ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在命令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i :直接修改读取的文件内容,而不是输出到终端。 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 function: a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

PS: 上面的-n参数比较重要,一般场景下我们只看经过sed处理后的内容,所以一般加上该参数。另外-f命令也比较重要,可以处理完毕后写入文件。

2.2 使用方法

看了使用说明后,使用方法就简单了。就是选定行,然后执行相关的动作即可。

例如:

2.2.1 指定行后进行动作 # 删除第3行到最后一行的内容。其中$表示最后一行 nl myfile.txt | sed '3,$d' # 替换2到5行的内容,替换的内容可以带空格 nl myfile.txt | sed '2,5c some thing' 2.2.2 查找匹配后进行动作 # 查找所有行中的匹配的行,类似grep。 nl myfile.txt | sed -n '/match/p' # 查找替换 nl myfile.txt | sed -n 's/match/new_char/g' 3. awk

awk相比sed功能更加强大点,除了循环对行进行处理之外,在列上的处理能力更加强大。同时还支持编程。我们这里仅仅罗列其比较常用的几个功能。

其基本使用方法为:

awk '{pattern + action}' fileName 3.1 BEGIN和END

这两个关键字必须大写,表示在行处理开始和结束的时候做一些动作。

例如:

awk 'BEGIN{print "Begin"} {print $1} END{print "End"}' fileName 3.2 处理行中的指定列

这个是最常用的方法,默认采用空格风格,可以通过-F来制定分隔符。

# 逗号分隔符 awk -F ',' '{print $1 $2}' fileName 3.3 统计编程

AWK编程一般来说常用的主要就是做统计求和了。掌握以下统计求和例子即可:

# 对第一列按照名字进行求和 awk '{sum[$1]++}END{for(x in sum){print x","sum[x]}}' fileName

这个功能也可以使用sort和uniq命令来完成

awk '{print $1}' | sort | uniq -c | sort -nr

参考资料:

linux sed命令详解 linux awk命令详解

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: AWKLinux数据删除
分页:12
转载请注明
本文标题:sed和awk命令浅析
本站链接:http://www.codesec.net/view/524584.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(57)