一文带你回顾shell中的文本处理函数1

sort 文件排序, 通常用在管道中当过滤器来使用

-b 忽略每行前面的空白区域

-d 只考虑处理空格和字母字符,数字

-f 忽略字母大小写

-m 合并已经排序的文件,不排序

-n 根据字符串的数字比较

-o 将排序后的结果写入文件

-r 以相反的顺序来排序

-t 指定排序时所用的分隔字符

-k 指定需要排序的栏位(列,域)

-u 忽略相同行

tsort 拓扑排序, 读取以空格分隔的有序对, 并且依靠输入模式进行排序

uniq 删除一个已排序文件中的重复行. 经常出现在sort命令的管道后边

-c 统计每行出现的次数, 作为前缀放到输出行的前面

expand

把每个tab转化为一个空格. 这个命令经常用在管道中

unexpand

会把每个空格转化为一个tab. 效果与expand命令相反

cut 从文件中提取特定域

-f 列号,提取第几列 N-、N-M和-M分别表示每行N字符后的所有内容、N-M段内容和M段之前的内容。包括N和M的边界

-d 分隔符,按照指定分隔符分割列 默认字段分隔符为"TAB"

-b:按字节筛选;

-n:与"-b"选项连用,表示禁止将字节分割开来操作;

-c:按字符筛选;

-s:避免打印不包含分隔符的行;

cut -d" " -f3-5- test.sh -s # 按空格分割,打印3-5列的内容

paste 将多个文件, 以每个文件一列的形式合并到一个文件中

join

这个命令与paste命令属于同类命令. 但是它能够完成某些特殊的目地. 这个强力工具能够以一种特殊

的形式来合并两个文件, 这种特殊的形式本质上就是一个关联数据库的简单版

File: 1.data

100 Shoes

200 Laces

300 Socks

File: 2.data

100 $40.00

200 $1.00

300 $2.00

join 1.data 2.data

File: 1.data 2.data

100 Shoes $40.00

200 Laces $1.00

head 输出文件的头部内容

-n: 输出的行数

下面三种写法是等价的

head -n25 input.txt

head -n 25 input.txt

head -25 input.txt

-n 后面也可以跟负数

head -n -5 input.txt #此命令表示输出input.txt除了后5行以外的全部内容

-c: 输出的字节数

tail 输出文件结尾部分

-n 行数 -n +M 跳过开头M行输出

-f 动态的输出正在更新的日志文件

grep 使用正则表达式的一个多用途文本搜索

-i 选项在搜索时忽略大小写

-w 选项用来匹配整个单词

-l 选项仅列出符合匹配的文件, 而不列出匹配行

-r (递归) 选项不仅在当前工作目录下搜索匹配, 而且搜索子目录

-n 列出所有匹配行, 并显示行号

-v 显示所有不匹配的行

-c 显示匹配到的行数的总数,而不会列出具体的匹配

-E 匹配多个单词,用|分割 grep -E 'matches|Matches' file.txt 等价于egrep

-F 按照字符串字面意思进行的搜索,即不允许使用正则表达式 等价于fegrep

为了搜索压缩文件, 应使用zgrep, zegrep, 或zfgrep 如果要搜索bzipped类型的文件, 使用bzgrep.

look

与grep命令很相似, 但只能做"字典查询", 也就是它所搜索的文件必须是已经排过序的单词列表

fold 将输入按照指定宽度进行折行. 这里有一个非常有用的选项-s, 这个选项可以使用空格进行断行

fmt 一个简单的文件格式器, 通常用在管道中, 将一个比较长的文本行输出进行"折行"

nl 计算行号过滤器.

nl filename将会把filename文件的所有内容都输出到stdout上, 但是会在每个非空行的前面加上连续的行号

iconv 将文件转化为不同编码格式(字符集)的工具. 这个命令主要用来本地化

recode iconv命令的专业版本.

这个非常灵活的并可以把整个文件都转换为不同编码格式

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章