shell工具

shell 工具

sort

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

常用选项:
-r:降序
-u:去掉重复行
-n:以数值排序
-t:指定分隔符
-k:指定分隔符后,按指定列数进行排序
-f:忽略大小写排序
-c:检查文件是否排序。如果乱序,返回1且输出第一个乱序行的相关信息
-C:检查文件是否排序。如果乱序,返回1

uniq

去掉相邻行之间的重复行,常与sort搭配使用
-d:只显示文件中重复的行
-u:只显示文件中不重复的行
-c:在输出的每行行首。加上本行在文本中出现的次数

paste

该命令主要用来将多个文件的内容合并。paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本。
常用选项:
-d:指定域分隔符
-s:将文件置为一整行
-:若命令行参数中有n个-,则输出时每行包含n个结果

cut

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
-d:指定域分隔符
-f:输出当前与分隔符下的指定列
-b:以字节为单位进行分割
-c:以字符为单位进行分割

xargs

一:对文件进行格式化输出,将文件的多行输入转成单行输出
二:将格式化后的字符串作为命令行参数传递给其他命令
xargs的一个选项-I,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次。

grep

按照关键字或者正则表达式进行行过滤
常用选项:
-E:使用扩展正则
-v:不显示匹配到的内容
-q:安静模式,不打印出结果。匹配到,返回0;没匹配到返回1
-r/R:递归地对当前目录下所有文件内容进行匹配

sed

sed是一种流编辑器。每次处理时读入一行,存入临时缓冲区,称为“模式空间”,接着用sed命令处理缓冲区中的内容。处理完成后,把缓冲区中的内容送往屏幕,接着处理下一行,直至文件末尾。文件内容不会改变。
常见的基本使用:
/pattern/p: 打印匹配pattern的行
/pattern/s/pattern1/pattern2/: 查找符合pattern的行,将该行第一个匹配pattern1的字符串替换为pattern2

基本命令

p命令:使用p命令需要注意,sed是把待处理文件的内容连同处理结果一起输出到标准输出的,因此p命令表示除了把文件内容打印出来之外还额外打印一遍匹配pattern的行 要想只输出处理结果,应加上-n选项,这种用法相当于grep命令。
d命令:删除
g命令:将匹配pattern的每一个结果作用于pattern2的处理方式

高级命令

sed不仅有模式空间,还有保持空间。模式空间:可以想成工程里面的流水线,数据直接在它上面进行处理。
保持空间:可以想象成仓库,我们在进行数据处理的时候,作为数据的暂存区域。

g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除
G: 将hold space中的内容append到pattern space\n后
h: 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
H:将pattern space中的内容append到hold space\n后
d: 删除pattern中的所有行,并读入下一新行到pattern中
D: 删除multiline pattern中的第一行,不读入下一行
x:交换保持空间和模式空间的内容
N:将下一行添加到pattern space中
n:读取下一行到pattern space

eg:计算1到100的和

seq 100 | sed ':a;N;s/\n/+/g;{$!ba}' | bc
特殊符号

&:已匹配字符串标记&,可以表示匹配pattern1之后的所有字符
子串匹配标记\1,\2…\n
$:表示最后一行

选项

-i:sed默认不改变文件内容,使用该选项则会改变文件内容
-n:使用p命令需要注意,sed是把待处理文件的内容连同处理结果一起输出到标准输出的,因此p命令表示除了把文件内容打印出来之外还额外打印一遍匹配pattern的行 要想只输出处理结果,应加上-n选项,这种用法相当于grep命令。

awk

awk不仅能以行为单位还能以列为单位处理文件。awk缺省的行分隔符
是换行,缺省的列分隔符是连续的空格和Tab。
如果想定制分隔符,常用的方法是使用 -F 选项
与sed一样,awk在“/patern/”中使用正则表达式。

使用print命令输出符合正则表达式的结果行。 0 0 代 表 整 条 记 录 ( 行 ) , 1, 2 2 , 3… 表示指定的域(列)。
还可以使用printf进行输出。printf 命令在使用上,与在C语言中一模一样。

BEGIN 和 END

BEGIN和END,是awk中两个极具特色的表达式,可以用他们做文本处理之前的准备工作,之后的收尾工具,极具实
用价值,基本格式如下:

BEGIN{} /REG/{} END{}
BEGIN{} condition{} END{}

任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部
的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
统计文本中,成绩及格的人数,这里awk中的变量,语法的使用要格外注意。全部类C!

FS定制输入域分隔符,OFS定制输出域分隔符

awk脚本

awk脚本的执行需要awk解释器单的支持。

[ly@localhost shell_test]$ cat count.awk 
#!/usr/bin/awk -f 

BEGIN{
  great=0
  good=0
  nomal=0
  bad=0
}

{
  if ($2 >= 85)
  {
    great++;
  }
  else if($2>= 75)
    good++;
  else if($2 >= 60)
    nomal++;
  else 
    bad++;
}

END{
  printf("great:%s\n", great);
  printf("good:%s\n", good);
  printf("nomal:%s\n", nomal);
  printf("bad:%s\n", bad);
}

find

find pathname -options [-print -exec -ok …]

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。 其中 print0 我们之前已经见过面了。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} \;,注意{}和\; 之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行

常见选项

-name: 按照文件名查找文件。
-perm: 按照文件权限来查找文件。
-prune: 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-
prune将被find命令忽略。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-user: 按照文件属主来查找文件。
-group: 按照文件所属的组来查找文件。
-nogroup: 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser: 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
-newer file1 ! -newer file2: 查找更改时间比文件file1新但比文件file2旧的文件
-type: 查找某一类型的文件

eg:查找系统中所有,大于2048字节小于4096字节的文件,并使用对符合条件的文件进行 ls -l 输出.

find / -size +2048c -size -4096c -exec ls -l {} \; | more

其它重要工具

free

查看内存使用情况

df

查看磁盘使用情况

iostat

分析io压力

netstat

查看端口占用

top

实时动态地查看系统的整体运行情况

arp

显示arp缓冲区中的所有条目、删除指定的条目或者添加静态的ip地址与MAC地址对应关系。

route

查看路由表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值