sort、grep、sed、awk等命令

sort、uniq、paste、cut、xargs、grep、sed、awk、find命令。


  • sort
    将文件的每一行作为一个单位,相互比较,比较原则是从首字母向后,依次按ASCII值进行比较,最后将他们升序输出。
选项含义
不加选项默认以ASCII升序排序
-r逆序,即降序排序
-u去重
-n以整数来排序
-t -k-t设定分隔符,-k指定列数排序
-f小写转大写进行比较,即忽略大小写
-b忽略每一行前面空白部分
-c检查是否已经有序,如果乱序,则输出第一个乱序的行信息,返回1
-C检查是否已经有序,如果乱序,不输出,返回1

例:sort -t ‘:’ -k 2 -n file
分隔符为’:’,对第二行按整数排序

  • uniq
    去掉相邻重复行
选项含义
-c统计重复行出现的次数
-d只显示重复行
-u只显示不重复行

例:找出文件中出现次数最多的前三个
sort file|uniq -c|sort -rn|head -n3
排序|去重统计次数|次数逆序|取前三个

  • paste
    粘贴。将多个文件内容进行合并。按行将不同文件行信息放在一起,缺省情况下,paste连接时,用空格或tab键分割新行中不同文本。
选项含义
-d指定域分隔符,paste -d# file1 file2
-s将每个文件合并成行
-每有一个-,就有一个列分隔符,默认为空格或tab。可以定制输出格式
  • cut
    从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
    必须指定-b、-c或-f标志之一。
选项含义
-b以字节为单位进行分割
-c以字符为单位进行分割
-d -f-d自定义分隔符,默认为tab,-f指定显示那个区域

echo ‘hello’ | cut -b 1 切出h
echo ‘hello’ | cut -b 1-3 切出hel
echo ‘hello’ | cut -b 1,3 切出hl
echo ‘hello world’ | cut -d’ ’ -f 1 切出hello(1、1,2、2、1-、-2指定不同区域)

  • xargs
    将标准输入数据转换成命令行参数。单行变多行,多行变单行。
选项含义
-n指定列数,多行输出。-n3,指定每行三列
-d自定义一个域分隔符,将特定列打散,指定格式输出

cat file | xargs 多行变单行
echo ‘a#b#c’ | xargs -d#

  • grep
选项含义
-E扩展正则
-v显示未匹配的部分
-r/R采用递归方法
-q安静模式,只匹配,不打印
-i忽略大小写
-n输出匹配行的行号
-o只输出匹配到的部分
  • sed
    sed是一种流式编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用。处理时,把当前处理的行存储在临时缓冲区,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直道文件末尾。文件内容并没有改变,除非使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
    默认为基准正则。
选项含义
-p/pattern/p 打印匹配pattern的行
-n只显示匹配成功的
-i影响原文件
/pattern/s/pattern1/pattern2/g查找符合pattern的行,将该行所有匹配pattern1的字符串替换为pattern2。带g每一处都替换,不带只替换一次
\1,\2…子串匹配标记,匹配到的第一个子串标记为\1,通过对标签进行重组,完成数据逆置
-e允许在同一行执行多条语句
:a设置标签a
ba跳转到标签a

模式空间与保持空间
在模式空间(pattern space)中处理数据,保持空间(hold space)只存数据。
模式/保持空间中只有一行数据时,删除末尾换行;有多行时,加上换行。

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

例:1-100求和
seq 100 | sed ‘:a;N;$!ba;s/\n/+g’ bc
产生1-100的序列|数字之间加上加号 计算

  • awk
    awk不仅能以行为单位还能以列为单位处理文件。缺省的行分隔符是换行,列分隔符是连续的空格和tab。
    基本格式:
    awk option ‘script’ file1 file2
    awk option -f scriptfile file1 file2
选项含义
{print $2}打印第2个域
$NF最后一个域
$(NF-1)倒数第二个域
print,printf格式化输出,同C
-F指定分隔符
-F[:;#]支持多种符号的分隔符

BEGIN&END
做文本处理之前的准备工作,之后的收尾工作。相当于构造和析构。
格式如下:
BEGIN{ } /REG/{ } END{ }
BEGIN{ } condition{ } END{ }

例:统计文本中空行数量
awk ‘BEGIN count=0/*/{count++;}END{printf(“%d\n”,count);}’ file

  • find
选项含义
-name按照文件名查找文件
-perm按照文件权限查找文件
-depth查找时,首先查找当前目录中的文件,然后再在子目录中查找
-user按照文件属主查找
-newer file1 !-newer file2查找更改时间比file1新但比file2旧的文件
-type查找某一类型的文件
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值