xdays

Linux 字符处理

August 05, 2010

linux 系统中很多文件都是纯文本文件,如配置文件和日志文件。系统管理时对这些文件的处理显得尤为重要,系统中带有很多经典的字符处理命令,他们在系统管理和脚 本编写时有很强大的功能,这些命令包括 cut,diff,expand/unexpand,grep,head /tail,join,paste,sed,sort,cat/tac,tr,uniq。下面具体总结以下相关命令的常用用法:

cut

功能:截取文件内容或者输出中的相应字段
常用选项:
-d 指定字段分隔符
-c 取固定字符范围
-f 取第几个字段

diff

功能:比较两个文本不同,以格式化样式显示。
常用选项:
-b 忽略空格数不同
-B 忽略空白行
-i 忽略大小写
-I 忽略指定字符差异
-t 输出的 tab 以空格替换

expand/unexpand

功能:将 tab 转换成空格/将空格转换成 tab
常用选项:
-t 指定 tab 代表空格数,默认 8

grep

功能:从文件或者标准输入中过滤并显示匹配行
常用选项:
-i 忽略大小写
-n 显示行号
-v 显示不匹配的行

注意:在构造匹配字符串时可以用正则表达式,这是一种相当复杂但是很好很强大的规则,推荐两篇基础教程正则表达式 30 分钟入门教程揭开正则表达式的神秘面纱, 总结的相当不错。

head/tail

功能:显示文件或者标准输入的开头/结尾几行
常用选项:
-n 显示的行数

join

功能:根据相同字段合并两个文件
命令选项:
-t 指定分隔符
-i 忽略大小写
-1 n 指定第一个文件的哪一段
-2 n 指定第二个文件的哪一段

paste

功能:将两个文件对应行合并,并以 tab 分开。
命令选项:
-d 指定分隔符

sed

功能:对标准输入的处理
命令选项:
-n 安静模式,仅显示被处理过的行
-f 输出到文件
-r 支持扩展正则表达式
操作说明:n1:n2 function
function 主要包括:
a 新增;c 替换;d 删除;i 插入;p 打印;s 搜索
指令示例:ifconfig eth0 |grep ‘binetb’ | sed ‘s/^.*addr://g’ | sed ‘s/Bcast.*$//g’     /*过滤出带有 ip 地址的那一行,在把 ip 地址前后的字符用空白替换掉,就得到 ip 地址了*/

sort

功能:对文件内容或者标准输入以行为单位排序
命令选项:
-b 忽略开始空格
-f 忽略大小写
-k 按照第几个字段排序
-n 使用数字排序
-o 输出到文件
-r 逆序排序
-t 指定分隔符

cat/tac

功能:显示/逆序显示 文件内容
命令选项:
-A 显示控制符号
-n 显示行号

tr

功能:替换删除字符
命令选项:
-d 删除指定字符
-s 替换重复字符

uniq

功能:重复字符只显示一次
命令选项:
-i 忽略大小写
-c 进行计数