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

原文地址:https://www.cnblogs.com/persist/p/3369148.html