c++清空一个txt文本_Linux下常用文本处理命令大全

db4d4732afaa934617a6891ba88ca406.png

Linux中很多文本工具都使用到了正则表达式,正则表达式可以极大的简化linux系统管理工作,因为网上有很多正则相关的教程,所以这里不再讲述,我当时看的是菜鸟的正则表达式,看个一下午在实验几遍基本就会了,除了正向肯定预查,反向肯定预查这几个比较复杂一些,其他都是非常简单的,很多时候记不住也可以查询网上对着写,并不需要你实时记住。这里主要谈谈awk等用到正则表达式的文本处理工具。

一、awk

awk的指令必须包含在单引号中。

基本句式

awk -F'指定输入分隔符' 'BEGIN{做一些初始化工作} 一些过滤条件 {针对每行的工作}... END{最后收尾工作}'

中间的处理块可以有多个,通过过滤条件单每行都会走一遍过滤条件,其中BEGIN和END边只会执行一遍

过滤记录

  1. awk '$3==0 && $6=="LISTEN" ' netstat.txt
  2. awk '$3==0 && $6=="LISTEN" || NR==1 ' netstat.txt

指定分隔符

  1. awk -F: '{print $1,$3,$6}' /etc/passwd等价于awk 'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd
  2. awk -F '[;:]' 指定多个分隔符
  3. awk -F: '{print $1,$3,$6}' OFS="" /etc/passwd指定输出分隔符

需要注意的是上面print $1,$3,$6中的,被替换成了分隔符,如果是print $1$3$6则中间没有分隔符

特殊关键字:

  1. NR 目前处理的行号
  2. NF 当前处理的行一共用到的字段数目
  3. FNR 目前处理的文件的行号(当处理多个文件时,NR会不停的累加,但如果是FNR则在处理新文件是从1开始)
  4. FILENAME 文件名
  5. $0 当前整行
  6. FS 输入字段分隔符 默认是空格或Tab
  7. RS 输入记录分隔符 默认为换行符
  8. OFS 输出字段分隔符 默认是空格或Tab
  9. ORS 输出记录分隔符 默认为换行符

正则

  1. 普通匹配: awk'/hello/ {print}' test.sh
  2. 匹配取反: awk '!/hello/ {print}' test.sh
  3. 同时匹配: awk '/hello/ && /world/ {print}' test.sh
  4. 或者匹配: awk '/hello/ || /world/ {print}' test.sh 也可以写成awk '/hello|world/ {print}' test.sh
  5. 指定列匹配: awk '$5 ~ /hello/ {print}' test.sh
  6. 指定列匹配取反: awk '$5 !~ /hello/ {print}' test.sh

输出到不同的文件

  1. $ awk 'NR!=1{if($6 ~ /TIME|ESTABLISHED/) print > "1.txt"; else if($6 ~ /LISTEN/) print > "2.txt"; else print > "3.txt" }' netstat.txt
  2. awk 'NR!=1{print > $6}' netstat.txt

其实使用了 >重定向,上例子使用了if语句

  1. 统计数据: awk 'NR!=1{a[$6]++;} END {for (i in a) print i ", " a[i];}' netstat.txt
  2. 行数筛选,开头和结尾的条件使用,分隔: awk '/test1/,/test2/ {print}' test.txt

和环境变量的交互

$ x=5 $ y=10$ export y $ echo $x $y5 10$ awk -v val=$x '{print $1, $2, $3, $4+val, $5+ENVIRON["y"]}' OFS="" score.txtMarry   2143    78      89      87Jack    2321    66      83      55Tom     2122    48      82      81Mike    2537    87      102     105Bob     2415    40      62      72

二、grep

参数列表:

  1. -w 匹配整个单词
  2. -s 忽略文件不存在等报错
  3. -l 仅列出匹配文件列表
  4. -L 仅列出不匹配文件列表
  5. -A 显示后的行数 如-1 匹配行的后1行
  6. -B 显示前的行数 如-1 匹配行的前1行
  7. -number 显示前后的行数 如-1 匹配行的前后1行
  8. -n 打印行数
  9. -c 仅显示个数
  10. -v 反向
  11. -o 仅显示匹配的内容
  12. -E 则表示要使用EREs
  13. -P 则表示要使用PREs

grep主要就是一个正则表达式的使用,其中需要注意正则有三种BREs、EREs和PREs。前两种不支持非贪婪匹配。grep默认是BREs,所以他?,+,|,{,},(,)这种字符都需要用转义,另外他不支持s,S,D,d,等字符。

三、sed

sed命令在自动化脚本编写的过程还是经常用到的。

基本句式: sed -nfei [操作]

操作: n1,n2 动作

动作:

  1. d: 删除
  2. s: 替换,行内替换,行内匹配的字符串,如hello world该行替换hello为hi变成hi world
  3. a和i: a增加在匹配的后面增加行 i增加在匹配的前面增加行
  4. c :替换,针对整行替换

例子:

  1. sed -e 's/hello/hi/g':替换文本,-e可以省略
  2. sed -e '1,2s/hello/hi/g' -e '3,4s/world/man/g:等价于sed -e '1,2s/hello/hi/g;3,4s/world/man/g
  3. sed s/hello (world)/1 hi/g':群组匹配,可以使用选择前面的群组

四、sort和uniq

sort参数

  1. -r: 默认升序,-r表示反序
  2. -u: 移除重复
  3. -o: 重定向到文件,注意sort test.txt >test.txt不可用,因为> 是想清空文件,所以会导致文件在排序之前就清空了
  4. -n: 默认按字符排序,如10小于2,-n表示按数字排序
  5. -t: 指定分隔符
  6. -k: 指明用哪一列来做排序
  7. -b: 忽略每行前面开始出的空格字符

例子:

  1. sort -t $'' -k 1 -u res.txt > res2.txt 以tab作为分隔符,按第一列排序并去重

uniq参数

需要注意uniq需要文本是有序的,所以一般使用uniq的时候是用更早sort的管道后面

  1. -c:显示出现的次数
  2. -d:仅显示重复出现行;    
  3. -u :仅显示出一次的行列;   

说说sort|uniq 和sort -u,一直觉得很奇怪,两者有什么区别,功能是一样的。sort -u是后面加入的,所以很多人还是使用了sort|uniq,目前推荐使用sort -u,因为还少了进程间通讯。

五、实战

处理以下文件内容,将域名取出并进行计数排序,如处理:

http://www.baidu.com/index.htmlhttp: / / www.baidu.com/1.htmlhttp://post.baidu.com/index.htmlhttp://mp3.baidu.com/index.htmlhttp://www.baidu.com/3.htmlhttp://post.baidu.com/2.html得到如下结果:3 www.baidu.com2 post.baidu.com1 mp3.baidu.com

解法1:grep -Po '(?<=//)(.*?)(?=/)' test.txt |sort |uniq -c|sort -nr

1.利用了Perl,他支持非贪婪,2.利用了正向和反向预查(正向预查是后面的(?=)) 3.利用了-o参数只输出匹配的内容

解法2:awk -F/ '{print $3}' test.txt |sort |uniq -c|sort -nr

指明了分割符号 直接取对应值

解法3:sed 's/http://([^/]*).*/1/' test.txt|sort |uniq -c|sort -nr

基本的正则中小括号需要转义,如果采用-r参数即扩展的正则小括号不用转义

解法4: sed -e 's/http:' -e 's//.*//' | sort | uniq -c | sort -rn

采用了替换,先替换前面的,在替换后面的

awk例子

需要注意awk不支持多维数组,采用了一种变通的方式,普通的使用没问题,但是如果需要存的值是一个map就不合适了,如下文件 1-6列分别为deal od sum up lj day ,现在要计算sum up lj day 的累加和输出输出也要是deal od sum up lj day也就是sum up lj day需要是一个map,不过awk做不到这点

{    updealids:{        od: {day,sum,up,lj}            }}awk 'BEGIN{OFS=""}{result[$1,$3,"sum"]+=$4;result[$1,$3,"up"]+=$5;result[$1,$3,"lj"]+=$6;result[$1,$3,"day"]=$2}END{for ( i in result)   {split(i, a, SUBSEP); print result[i] ,a[1], a[2], a[3] }}'  *

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

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

相关文章

labuladong 的算法小抄_来自GitHub 68.8k star的硬核算法教程

很多朋友害怕算法&#xff0c;其实大可不必&#xff0c;算法题无非就那几个套路&#xff0c;一旦掌握&#xff0c;就会觉得算法实在是太朴实无华且枯燥了&#xff01;本文选自硬核算法教程《labuladong的算法小抄》&#xff0c;带你学习套路&#xff0c;把握各类算法问题的共性…

html5 的有那些新标签,Html5新标签都有那些

按功能分有以下新标签&#xff1a;格式定义文本的文本方向&#xff0c;使其脱离其周围文本的方向设置。定义有记号的文本。定义预定义范围内的度量。定义任何类型的任务的进度。定义若浏览器不支持 ruby 元素显示的内容。定义 ruby 注释的解释。定义 ruby 注释。定义日期/时间。…

router vue 动态改变url_2020年 vue常见面试问题总结(干货)!

1.什么是mvvm模式&#xff0c;谈谈你的理解&#xff1f; MVVM - Model View ViewModel&#xff0c;数据&#xff0c;视图&#xff0c;视图模型view 可以通过 事件绑定 的方式影响 model&#xff0c;model 可以通过 数据绑定 的形式影响到view&#xff0c;viewModel是把 model 和…

html怎么弄艺术字体,如何为图片加上艺术字的图文方法步骤

给图片加字有好多方法&#xff0c;比如用photoshop等专业工具&#xff0c;在线图片加字&#xff0c;但是前者效果好&#xff0c;操作较复杂&#xff0c;后者效果不大理想。其实有更简单相对效果也不错的方法&#xff0c;利用你手边的工具就可以了&#xff01;下面介绍利用Windo…

androidstudio调用系统相机为什么resultcode一直返回0_函数递归调用?看这文就够了...

作者 | Cooper Song责编 | Elle出品 | 程序人生(ID&#xff1a;coder_life)我猜&#xff0c;大多数程序员第一次接触函数的递归调用都是在算斐波那契数列某项值的时候&#xff0c;这是函数递归调用最常见的应用之一。规定第一项和第二项为1&#xff0c;后面的项&#xff0c;每一…

四川中职计算机专业考的学校,四川中职学校哪家专业

我们日常工作中&#xff0c;会碰到如不注意操作的学生&#xff0c;随时有倒班现象发生。学生在学习实践活动中出现困难或问题&#xff0c;应根据学生学习实际情况进行审视、提出合理的解决方案。学生在工作实践活动中遇到困难时&#xff0c;要认真地学习&#xff0c;注意掌握方…

http请求 url 竖线_http.createServer创建http服务

语法&#xff1a;http.createServer([options][, requestListener])第二个参数requestListener&#xff0c;是一个自动添加到request事件的方法。返回一个新的 http.Server实例。之前代码是使用server.on(request,callback)来监听请求事件&#xff0c;由于http.createServer第二…

物理不突出能学计算机吗,物理成绩不突出,高中选科怎么办?3个理由让你解除后顾之忧!...

目前确定将要于2021年采用新高考“312”模式的有河北、辽宁、江苏、福建、湖南、湖北、广东和重庆8个省市。但是很多高一新生和家长们&#xff0c;面对选科问题时&#xff0c;却是犯了愁。“想选物理呢&#xff0c;物理成绩不突出&#xff0c;没有优势&#xff0c;听说选考物理…

@bean注解和@component注解的区别_通过源码查看 @Component,@Service 等注解是如何被解析的...

点击上方“匠心零度”&#xff0c;选择“设为星标”做积极的人&#xff0c;而不是积极废人来源&#xff1a;my.oschina.net/floor/blog/4325651前言1.Component解析流程找入口找核心方法概要分析2.查文档找思路3. 探寻Component派生性流程1. 确定metadataReader2.查看match方法…

考教育统计与测量可以带哪种计算机,《教育统计与测量》练习题库及答案

n m华中师范大学网络教育学院《教育统计与测量》课程练习题库及答案 本科一、 名词解释1.教育统计:是运用数理统计的原理和方法研究教育现象数量表现和数理关系的科学。2.变量:是指可以定量并能取不同数值的事物的特征。3. 算术平均数:所有观察值的总和除以总频数后所得之商。4…

python 函数参数传递机制_Python函数参数传递机制(超级详细)

Python中&#xff0c;函数参数由实参传递给形参的过程&#xff0c;是由参数传递机制来控制的。通过学习《Python函数值传递和引用传递》一节我们知道&#xff0c;根据实际参数的类型不同&#xff0c;函数参数的传递方式分为值传递和引用传递(又称为地址传递)&#xff0c;本节将…

职称计算机 高级,职称全国计算机考试已通过三个模块,如何取得职称高级计算机...

类似问题答案2021年广西科技大学3月全国计算机等级全国计算机等级考试在哪里网上报名&#xff1f;2.全国计算机等级考试在哪里网上报名&#xff1f; 答&#xff1a;考生可登录广西科技大学继续教育学院网站(广西科技大学网站首页点击——继续教育——考试报名(2021年3月全国计算…

centos7已有数据硬盘挂载_干货!如何给虚拟机增加虚拟硬盘,Linux再分区挂载

很多朋友一开始给虚拟机的硬盘都很小&#xff0c;用着用着虚拟硬盘就不够了&#xff0c;今天小编就给大伙说说如何给虚拟机添加虚拟硬盘在到Linux系统下分区格式化再到挂载。点击创建新的虚拟盘我分配一个8g的硬盘吧&#xff01;现在启动centos 7查看一下你刚刚添加的8G的硬盘&…

cad计算机绘注意事项,CAD制图的注意事项

CAD制图的注意事项CAD是应用比较广泛的软件&#xff0c;所以没有对某一行业的应用做优化&#xff0c;所以用起来可能不如一些专业的软件(如CAXA电子图版)那么方便&#xff0c;但正是因为它的这种广泛性&#xff0c;在很多工厂、单位、外企都使用这个软件作为正式绘图软件&#…

diy机器人图片 手绘纸箱_废物利用,她用几个纸箱让家里变成动物园,孩子回家乐坏了!收藏...

纸箱是我们日常生活中最常见的一种废品&#xff0c;现在随着网购的崛起&#xff0c;家里的纸箱越来越多&#xff0c;这时候你是直接丢弃&#xff0c;还是会想想是否可以再利用的价值&#xff1f;这些看似没用的纸箱&#xff0c;在创意妈的眼中可是个宝贝呢~它可以变废为宝成为孩…

计算机研究生考426分单科多少,考研初试426分,依然没被录取,他犯的错误,值得大家参考!...

原标题&#xff1a;考研初试426分&#xff0c;依然没被录取&#xff0c;他犯的错误&#xff0c;值得大家参考&#xff01;最近几天&#xff0c;考研初试成绩陆续发布。考试分数比较高的考生&#xff0c;有机会参加复试&#xff0c;就要尽早准备复试复习了。复试成绩也很重要&am…

uniapp 表单页面_uniapp自定义表单模板经验分享

极简属性&#xff1a;data(仅提供方法和极简示例&#xff0c;实践党可自行扩展&#xff0c;伸手党请绕行)表单组件通用注&#xff1a;此data是组件的一个隐藏属性示例&#xff1a;template&#xff1a;{{sexs[grouplist.sexIndex].name}}data&#xff1a;sexs: [{name: "男…

毕业就业推荐表计算机,毕业生就业推荐表

一份好的就业推荐表自我鉴定&#xff0c;能让你在求职过程中加分不少&#xff0c;所以同学们要重视起就业推荐表自我鉴定的作用。下面是由出国留学网小编为大家整理的“2020高校毕业生就业推荐表自我鉴定”&#xff0c;仅供参考&#xff0c;欢迎大家阅读。2020高校毕业生就业推…

etal斜体吗 参考文献_参考文献的标准格式

2.文后参考文献编排格式(1)专著、论文集、学位论文、报告[序号]作者.文献题名[文献类型标识]&#xff0e;出版地&#xff1a;出版者&#xff0e;出版年&#xff0c;起止页码(任选).范例&#xff1a;[1]杨浩滨.食品微生物学[M].北京&#xff1a;北京农业大学出版社&#xff0c;1…

70进货卖100利润是多少_一只周黑鸭随便就卖100多,那成本有多少?说出来你可能不信...

一只周黑鸭动不动就卖100多&#xff0c;那成本有多少&#xff1f;说出来你可能不信。如果你吃过周黑鸭&#xff0c;不知道每次想起的时候&#xff0c;尤其是午夜时分会不会有流口水的感觉&#xff0c;那种麻辣的口感&#xff0c;再搭配上冰凉爽口的啤酒&#xff0c;发自心底的那…