linux 文本处理三剑客

linux 文本处理常用3个命令

相关概念

Linux 管道

管道

管道是进程间通信的方式之一,本质上可以理解为一种文件资源,其实是一种缓冲区。利用文件系统中file结构,通过在2个节点间创建临时节点,实现节点间的单向通信。
管道有无名管道和有名管道之分,区别是前者只能在具有相关关系(比如父子进程等)的进程间可以使用,后者则没有严格限制。

管道命令

管道命令使用“|”作为界定符,并且由于管道命令自身的原因,管道命令只能处理前面命令传递的正确信息,stdandard error不能被处理。也就是说前面命令要有stdandard output作为后面命令stdandard input,这也是其和连续执行命令的区别。比如ls 就不能作为管道命令,因为它不会接收数据。

grep

格式

grep 正则 -xxx somethingelse 【–color】 filename1【 filename2】

参数

-a 将二进制文件以text文件的方式查找数据
-c 计数
-i 忽略大小写的不同
-v 取反
-n 行号

特别参数

–color=auto
颜色标记

举例

eg :
grep ‘usr’ --color=auto Read.md index.md
从文件Read.md和 index.md中输出包含usr字符串的行

相关

与之相关的还有cut命令
比如

cut -d ':' -f  // 2 以:分割,取第二列
-d 分割符
-f  所取的列

awk

处理每一行内的数据
awk 与其说是文本处理工具,更不如说是一种编程语言。

格式

awk ‘条件类型1{动作1} 条件类型2{动作2}’ filename

参数

-F 分隔符

特别参数

FS 分割符
NR 总行数
NF 总列数
$0当前行

举例

awk -F “” ‘{if(NR <30 && NR >10) print $1 }’ filename
// 取出10-30行的内容
甚至可以写循环和使用函数比如strstr(字符串查找)、touper(大写)等

sed

处理每一行内的数据

格式

sed -XXX filename

参数

-e 命令模式 输出到命令行中
-f 文件模式 输出到文件中
-n 安静模式 只有sed特殊处理的行会显示
-i 修改文件本身

特殊参数

g 全局匹配
s 替换
d 删除
p 显示

举例

cat filename|sed ‘10,30p’ 输出10-30行的内容
cat filename | sed ‘s/oldword/newword/g’ 用newword替换oldword

常见命令

wc 显示行数、字符数
sort 排序
uniq 去重计数
diff 文件比较

你可能感兴趣的:(linux)