2015年2月2日

Linux命令行文本处理工具

文件浏览
cat 查看文件内容
more 以翻页形式查看文件内容(只能向下翻页)
less 以翻页形式查看文件内容(可上下翻页)
head 查看文件的开始10行(或指定行数)
tail 查看文件的结束10行(或指定行数)

基于关键字搜索
命令grep用以基于关键字搜索文本

grep ‘linuxcast’ /etc/passwd
查找passwd文件中linuxcast的关键字,passwd必须是纯文本

find / -user linuxcast | grep Video
查找linuxcast用户所有文件中含linux关键字的文件(文件名)

find / -user linuxcast 2> /dev/null | grep Video
通过重定向把搜索结果中的标准错误输出到null设备当中,这样就不会显示报错信息

参数
-i 在搜索的时候忽略大小写

-n 显示结果所在行数
grep -n linuxcast /etc/passwd

-v输出不带关键字的行

-Ax在输出的时候包含结果所在行之后的指定行数
grep -A3 linuxcast /etc/passwd

-Bx在输出的时候包含结果所在行之前的指定行数
grep -B3 linuxcast /etc/passwd

基于列处理文本
命令cut用以基于列处理文本内容
cut -d: -f1 /etc/passwd
grep linuxcast /etc/passwd | cut -d: -f3
-d指定分割字符(默认是TAB)
-f指定输出的符号
-c基于字符进行切割
cut -2c-6 /etc/passwd

文本统计
命令wc用以统计文本信息
wc linuxcast
-l 只统计行数
wc -l linuxcast
-w 只统计单词
wc -w linuxcast
-c 只统计字节数
wc -c linuxcast
-m 只统计字符数
wc -m linuxcast

文本排序
命令sort用以对文本内容进行排序
sort linuxcast
-r进行倒序排序

sort -r linuxcast
-n基于数字进行排序

sort -n linuxcast
-f忽略大小写

-u删除重复行
sort -u linuxcast

-t c使用分隔符分割为列进行排序

-k x当进行基于指定字符为列的排序时,指定基于那个排序

删除重复行
命令sort -u可以用以删除重复行
sort -u linuxcast

命令uniq用以删除重复的相邻行
cat linuxcast | uniq

文本比较
命令diff用以比较两个文件的区别
-i 忽略大小写
-b 忽略空格数量的改变
-u 统一显示比较信息(一般用以生成patch文件)
diff -u linuxcast linuxcast-new > final.patch

拼写检查
命令aspell用以显示检查英文拼写
aspell check linuxcast
aspell list < linuxcast 处理文本内容
命令tr用以处理文本内容
删除关键字
tr -d ‘TMD’ < linux 转换大小写 tr 'a-z''A-Z' < linuxcast 搜索替换
命令sed用以搜索替换文本

sed’s/linux/unix/g’ linuxcast
把linuxcast文件中所有linux换为unix
(g是代表全局替换)

sed’s/linux/unix/’ linuxcast
把linuxcast文件中第一个linux换为unix

sed’1,50s/linux/unix/g’ linuxcast
只替换1到50个

sed -e ‘s/linux/unix/g’ -e’s/nash/nash_su/g’ linuxcast
替换所有linux为unix,替换所有nash为nash_su
(-e参数表示可以同时指定多个替换)

sed -f sededit linuxcast
将替换内容保存在sededit,需要时调用