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 分隔符为’:’,对第二行按整数排序
选项 含义 -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#
选项 含义 -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
选项 含义 -name 按照文件名查找文件 -perm 按照文件权限查找文件 -depth 查找时,首先查找当前目录中的文件,然后再在子目录中查找 -user 按照文件属主查找 -newer file1 !-newer file2 查找更改时间比file1新但比file2旧的文件 -type 查找某一类型的文件