linux--文本处理
开源文化的核心理念之一就是不要重复发明轮子,很多开源软件都大量使用了其他开源软件或功能组建,同样,Linux中的命令也往往只实现某个特定的、单一的功能,复杂功能往往都是通过多命令协作完成的
管道及重定向就是Linux多命令协作的基础机制
Linux的Shell对数据流进行以下分类定义:
stdin 标准输入 编号为:0 默认:键盘
stdout 标准输出 编号为:1 默认:终端
stderr 标准错误 编号为:2 默认:终端
重定向用来控制终端数据流:
> 将标准输入以覆盖形式重定向到指定文件,如:ls > outfile
>> 将标准输入以追加形式重定向到指定文件,如:ls >> outfile
< 重定向标准输入 如:grep linuxcast < /etc/passwd
2> 重定向标准错误
2>&1 将标准错误合并到标准输出中
管道“|”用以将一个命令的标准输出作为另一个命令的标准输入:
命令1 | 命令2
管道通常用来组合不同命令
重定向通常用来保存输出信息
关键字搜索:
grep 关键字 指定文件
-i 搜索时忽略大小写
-n 显示结果所在行
-v 显示不包含关键字的行
基于列的文本处理:
cut -d: -f1 /etc/passwd
-d 指定分割字符
-f 指定显示列
-c 基于字符顺序进行列分割
文本统计:
wc linuxcast
-l 只统计行数
-w 只统计单词书
-c 只统计字节数
-m 只统计字符数
文本排序:
sort linuxcast
-r 倒序排序
-n 基于数字进行排序
-f 忽略大小写
-u 删除重复行
文本比较:
diff linuxcast-1 linuxcast-2
-i 忽略大小写
-b 忽略空格数变化
-u 统一显示信息(一般用于生成patch文件)
文本转换:
tr -d "TMD" < linuxcast 删除指定关键字
tr 'a-z' 'A-Z' < linuxcast 转换大小写
搜索替换:
sed 's/linux/unix/g' linuxcast 将所有linux关键字替换为unix