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则是两个。

shell常见命令的更多相关文章

  1. hbase shell 常见命令

    quick start from official Hbase  hbase(main):003:0> create 'test', 'cf' 0 row(s) in 1.2200 second ...

  2. Step one : 熟悉Unix/Linux Shell 常见命令行 (三)

    3.学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd 端口查看 ps -- process status ps aux  观察程序所有程序 ...

  3. Step one : 熟悉Unix/Linux Shell 常见命令行 (二)

    2.学会使用一些文本操作命令 sed -- stream editor 1. Sed简介sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pat ...

  4. Step one : 熟悉Unix/Linux Shell 常见命令行 (一)

    1.文件系统结构和基本操作 ls  - - list directory contents -a/A 列出全部文件(包含隐藏文件) - i 列出inode号码 -n 查看UID and GID -d ...

  5. Step one : 熟悉Unix/Linux Shell 常见命令行 (四)

    4.了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息 了解/etc目录下的各种配置文章 /etc/hosts  主机配置文件 /etc/netwo ...

  6. shell中bash的常见命令

    shell 在计算机科学中,Shell俗称壳,用来区别Kernel(核) Shell分类:1:图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系 ...

  7. Linux Shell基础 Bash常见命令 history、alias命令以及常用快捷键

    概述  shell中常见命令history 历史纪录命令:history 命令格式如下: [root@localhost ~]# history [选项] [历史命令保存文件] -c:清空历史命令: ...

  8. [Linux基础]Linux基础知识入门及常见命令.

    前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1:192.168.40.11Linux ip:192.168 ...

  9. (转)Hbase shell 常用命令(1)

    Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...

随机推荐

  1. [剑指Offer]27-二叉树的镜像

    题目链接 https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&t ...

  2. [剑指Offer]6-从尾到头打印链表

    典型的后进先出,可以借助栈,也可以使用递归. 考虑到若链表过长递归可能造成函数调用栈溢出,所以使用栈更好. 注意stack无遍历操作,全部用push(),pop(),top()完成. 以下创建列表胡乱 ...

  3. .“代理XP”组件已作为此服务器安全配置的一部分被关闭的解决办法

    “代理XP”组件已作为此服务器安全配置的一部分被关闭.系统管理员可以使用sp_configure来启用“代理XP”.有关启用“代理XP”的详细信息,请参阅SQL Server联机丛书中的“外围应用配置 ...

  4. how2j网站前端项目——天猫前端(第一次)学习笔记5

    收拾好心情,现在开始学习第5个页面——购物车页面! 一.结算按钮 这个还是比较简单的,我自己看着站长的样子模仿了一个: 有个地方不会做,就是全选前面的复选框,站长的框里面是白色的,我搞不来. 二.订单 ...

  5. WorkerMan源码分析(resetStd方法,PHP中STDIN, STDOUT, STDERR的重定向)

    WorkerMan中work.php中 resetStd 方法中代码如下 public static function resetStd() { if (!static::$daemonize || ...

  6. cell设置背景颜色为啥不起作用

    利用poi设置背景颜色时,应如下配置, CellStyle cell=workbook.createCellStyle(); cell.setFillForegroundColor(IndexedCo ...

  7. git常用命令二

    http://www.jianshu.com/p/08c3f1804b36http://backlogtool.com/git-guide/cn/stepup/stepup1_1.html   git ...

  8. Android开发日常-listVIiew嵌套webView回显阅读位置

     详情页布局结构 需求是回显webview展示网页的阅读位置 方案1: 使用webview.getScrollY()获取滑动到的位置,用setScrollY()回显设置, 但是两个方法都出现了问题,g ...

  9. 基于kafka-net实现的可以长链接的消息生产者

    今天有点时间,我就来说两句.最近接触的Kafka相关的东西要多一些,其实以前也接触过,但是在项目使用中的经验不是很多.最近公司的项目里面使用了Kafka消息中间件,由于以前的人员编写的客户端的类不是很 ...

  10. Java泛型:List<?>与List的区别

    为什么说List<?>是type-safe而List不是type-safe的? 1.List<?> compiler看到了你使用了wildcard ?,那么相当于你对compi ...