awk

awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上。并且可以使用管道, input | awk ''  | output
1.首先要知道形式
awk 'command' file 如 awk '{print $0}' a.txt b.txt   (后面可以跟一个或多个文件)
2.command学习。command是awk的精髓,其结构为 '条件 {动作} 条件2 {动作2} ……'
2.1关键字学习:
变量名 含义 
ARGC 命令行变元个数 
ARGV 命令行变元数组 
FILENAME 当前输入文件名 
FNR 当前文件中的记录号 
FS 输入域分隔符,默认为一个空格 
RS 输入记录分隔符 
NF 当前记录里域个数 
NR 到目前为止记录数 
OFS 输出域分隔符 
ORS 输出记录分隔符
 
2.2条件动作
条件包括:
BEGIN END 特殊的两个,代表初始化和扫尾
判断:如$1 == "abc"  $NR == 5  /^tcp/(表示正则匹配)
   也可不写条件,则表示“全匹配”。从这个角度来讲 条件本质上是一种筛选规则。
动作:
{print NR,NF,$1,$NF,}
   {if(xxx) xxx; else xxx;}
   {for(key in array) xxx}
3.实例学习:
查看机器建立的各连接数
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
 
看每个连接的占用内存byte数---apache
ps aux|grep -v grep|awk '/httpd/ {sum+=$6;n++};END{print sum/n}'
 
根据逗号对abc文件的每一行进行split,然后按照第二列进行排序,结果输出到abc-sort中

awk -F, '{print $1}' abc | sort -n -k 2 -t: -r > abc-sort

sort命令解释:
-n 是按照数字排序
-k 是按照第二列排
-t: 是以:为分隔符
-r 是倒叙

git查看本次需要提交中变更的内容
git diff master HEAD --stat | awk '{printf "%s\n",$1}' |grep domain | awk -F'/' '{printf "%s\n",$NF}' | sort
批量重命名
ls *需要替换* | awk '{org=$0;gsub("需要替换","替换为");system("echo "org" "$0)}' 

sed

sed用法很多,但是根据上节之中,用来做内容替换最多。

sed -i -e 's/^dubbo_provider_version=.*[^e]$/&-pre/' /home/wuji/webroot-xxx/WEB-INF/classes/biz.properties
该命令作用是把 biz.properties中的dubbo_provider_version=1.0.0 替换为dubbo_provider_version=1.0.0-pre
替换的格式为 sed -e ’s/abc/def’ file.txt  把abc替换为def。其中第一部分的正则在第二部分可以被&取到。注意取到的是从dubbo开头的全部,而不是.*部分,这是正则表达式的知识。
并且s可以扩展为
举例2:去掉所有html标签
$ sed -e 's/<[^>]*>//g' myfile.html
g的作用:不加只替换第一个匹配,加了会替换所有匹配
sed -i 直接替换文件而不是在屏幕上输出 
学习过vim的朋友们可以轻易的联想到vim的命令模式,也有:s/abc/def的写法,所以linux下的知识很多都可以触类旁通。

uniq

uniq可以去除重复行或者做group by的统计
文件file:
a
a
b
b
b
sort file | uniq :
a
b
sort file | uniq -c:
2 a
3 b
之所以和sort组合是要把所有的a弄到一起,防止b后面有a的情况。
uniq -d 只显示重复的 ,-c只显示不重复的,两者互斥。
uniq -dc 只显示重复并统计 

sort  

功能说明:将文本文件内容加以排序。
语  法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
实例:
以第一个关键列的第二个字母开始进行排序:
$ sort -k 1.2 file.txt
以关键列第一列的第二个字母进行排序,如果第二个字母相同则根据第三列以数值的标准进行降序排列。
$ sort -k 1.2,1.2 -k 3,3nr file.txt 

-k 排序字段,按照-t 分隔符来区分的,从0开始。
-n 以数字格式排序。默认string方式比较的话,20和9比较是后者大。
-r 反序
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-b 忽略每行前面开始出的空格字符。
-u 去除重复行。(可以利用这个来去重
sort选项没特别需要讲的,需要注意的就是-k。-k选项的具体语法格式如下:
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。
如果不设定End部分,那么就认为End被设定为行尾。Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。
我们重点说说Start部分的FStart和C.Start。
C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。
FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。
同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。 

od

od命令是分析文件内容的工具,很多时候不知道文件的内容编码,此时用od命令看文件内部的字节构成是最直接的方式,使用方法:
od -Ax -tcx4 file 。
可以用于分析字符编码 是否utf-8 ,是否LE,BE
至于如何分辨,还需要了解每种编码的规则,譬如utf-8一般以三个字节来显示中文,而gbk则是两个。

转载于:https://www.cnblogs.com/violinn/p/4666486.html

基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od相关推荐

  1. shell编程之文本处理工具awk

    shell编程之文本处理工具awk 文章目录 shell编程之文本处理工具awk 一.awk介绍 1. awk概述 2. awk能干啥? 二.awk使用方式 1. ==命令行模式使用== ㈠ 语法结构 ...

  2. linux 命令行 过滤,Linux常用文本过滤命令(find grep wc awk sed sort uniq split)

    都支持regular expression 1. find-name 按名字查找 -perm 根据权限查找 -ctime –n +m 根据创建时间查找,-n n天内,+n n天之前 -mtime –n ...

  3. shell编程之文本处理工具sed

    shell编程之文本处理工具sed 文章目录 shell编程之文本处理工具sed 一.文件编辑器知多少 二.强悍的sed介绍 1. sed用来做啥? 2. sed如何处理文件? 三.sed使用方法介绍 ...

  4. Shell编程基础常用代码1

    Shell编程 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Sp ...

  5. java并发编程中常用的工具类 Executor

    /***************************************************  * TODO: description .  * @author: gao_chun  * ...

  6. linux编程 —— shell编程脚本常用语法总结 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  7. shell编程之文本小工具

    一.文本处理工具 1.grep工具 2.cut工具 3.sort工具 4.uniq工具 5.tee工具 6.diff工具 7.paste工具 二.bash的特性 1.命令和文件自动补全 2 .常用的通 ...

  8. shell mysql awk_今日推荐:shell 三剑客之文本处理工具awk

    背景 awk 是一个文本处理工具,通常用于处理数据并生成结果报告. awk 的命名是它的创始人 Alfred Aho.Peter Weinberger 和 Brian Kernighan 姓氏的首个字 ...

  9. awk 内嵌正则 提取字符串_干货-Shell编程文本处理三剑客之-awk

    awk 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂 ...

最新文章

  1. Pandas读取csv时 设置列名
  2. [POI2011]MET-Meteors 整体二分_树状数组_卡常
  3. atlas安装需要kafka吗_Atlas 2.1.0 实践(2)—— 安装Atlas
  4. JAVA入门到精通-第16讲-数组
  5. 【字符串】面试题之以逗号分割字符串,形成二维数组
  6. Oracle的卸载过程步骤
  7. Win8 MSDN 简中/繁中/英文正式版下载(微软官方原版)
  8. 华为每天给武汉员工发2千块,任正非:我最擅长的事,就是分钱!
  9. LiveNVR监控流媒体Onvif/RTSP功能支持海康摄像头通过海康SDK的方式接入直播观看录像回看预置位操作
  10. MongoDB未授权访问漏洞
  11. 编译器、汇编器、链接器
  12. Pycharm无法编辑问题
  13. Linux学习13—网站服务
  14. 穿越时间的蛀洞——书评《Java企业设计模式》
  15. 招银网络科技2018秋招试题
  16. sprinngboot分库分表中间件
  17. 2月24作业波斯顿房价预测线性回归
  18. Ubutun下搭建MySQL用户验证的WebDav服务器
  19. 饿了么确认外卖骑手盟主被抓,称已被平台拉黑
  20. GitHub - 如何对开源项目做出贡献

热门文章

  1. python做后端开发的优点_【后端开发】python语言的特点是什么
  2. ubuntu 自动加载ko_linux驱动模块开机自动加载,以及应用程序开机自启动
  3. oracle 取消exp权限,oracle 复制账号权限oracle11gexp导出问题:部分表导不出来
  4. java mariadb 使用,java连接mariaDB的设置,java连接mariadb
  5. 实例变量和局部变量区别
  6. html链接word,word添加网址超链接方法
  7. 【Java基础篇】你真的懂switch语句吗?
  8. Huffman编码的设计与实现
  9. C语言和C++的区别整理详解!
  10. poj2253 Frogger(最短路变型或者最小生成树)