sort、grep、sed、awk等命令

xiaoxiao2021-02-28  36

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设置标签aba跳转到标签a

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

选项含义g将hold space中的内容拷贝到pattern space中,将原来pattern space里的内容清除G将hold space中的内容append(追加)到pattern spaceh将pattern space中的内容拷贝到hold space中,将原来hold space里内容清除H将pattern space中的内容append到hold spaced删除pattern space中所有行,并读入下一行到pattern space中D删除multiline pattern中第一行,不读入下一行x交换保持空间和模式空间内容n读取下一行到pattern spaceN将下一行添加到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查找某一类型的文件
转载请注明原文地址: https://www.6miu.com/read-2600051.html

最新回复(0)