linux 常用文本处理工具


  •  tr
  • cat
  • tac
  • rev
  • more
  • less
  • head
  • tail
  • cut
  • paste
  • wc
  • sort
  • uniq

tr  转换和删除字符

常用选项

-d    # 删除字符
-s    # 去重,把连续重复的字符以单独的一个字符显示
-c    # 取反

[:alnum:]:字母和数字
[:alpha:]:字母
[:digit:]:数字
[:lower:]:小写字母
[:upper:]:大写字母
[:space:]:空白字符
[:print:]:可打印字符
[:punct:]:标点符号
[:graph:]:图形字符
[:cntrl:]:控制(非打印)字符
[:xdigit:]:十六进制字符

cat 查看文本内容

-E:显示行结束符$
-A:显示所有控制符
-n:显示的文本带行号
-b:对非空行加行号
-s:压缩连续的空行成一行

tac 反向显示文本内容

tac /etc/passwd

rev 反向显示每行

rev /etc/passwd

more 分页查看文本内容

more -d test.txt

less 分页查看文件

/文本 搜索 文本
n/N 跳到下一个 或 上一个匹配

head 显示文本前面的行

-c # 指定获取前#字节
-n # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前
-# 同上

tail 显示文件后边的行

-c # 指定获取后#字节
-n # 指定获取后#行,如果#是负数,表示从第#行开始到文件结束
-# 同上

-f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 --follow=descriptor,当文件删除再新
建同名文件,将无法继续跟踪文件
-F 跟踪文件名,相当于--follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文
件

cut 提取文本的指定列

-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
    #: 第#个字段,例如:3
    #,#[,#]:离散的多个字段,例如:1,3,6    -#:连续的多个字段, 例如:1-6
    混合使用:1-3,7
-c 按字符切割

--output-delimiter=STRING指定输出分隔符

paste 合并多个文件同行号的列到一行

-d #分隔符:指定分隔符,默认用TAB
-s #所有行合成一行显示

wc 统计文本数据

-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度

sort 排序

-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t c 选项使用c做为字段界定符
-k # 选项按照使用c字符分隔的 # 列来整理能够使用多次

uniq 删除重复行

-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行

...