linux的文本处理(一)

1、grep

常用参数
-A : 除了显示匹配上的行外,并显示该行之后的内容,可以理解为after
-B : 除了显示匹配上的行外,并显示该行之前的内容,可以理解为before
-c : 输出时显示匹配上的行的计数
-E : 可使用扩展正则表达式来匹配
-F : 用于查找固定字符串
-i : 忽视大小写的匹配
-n : 标示出匹配上的行数的行编号
-v : 只输出那些没有匹配上的行
-o : 只输出匹配上的那部分内容
-w : 只匹配整个单词
-a : 对二进制文件以text形式匹配
常见用法:
1)匹配固定字符串(在abc.txt文件中匹配mmm)
grep -F mmm abc.txt
2)输出没有匹配上mmm的行
grep -v mmm abc.txt
3)输出匹配上mmm的行数
grep -n mmm abc.txt
4)搜索目录,并且是递归搜索,比如递归检索当前目录
grep -r mmm
5)使用正则匹配来搜索匹配上mmm连续重复的行
grep -E ‘(mmm)+’ abc.txt
6)匹配多个字符串
grep -e “aaa” -e “bbb”
7)只在目录中所有的.php和.html文件中递归搜索字符“main()”
grep “main()” . -r --include *.{php,htlm}

2、sed

常用选项
-n : 取消默认的输出,使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来
-e : 进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑
-f : 指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作
-r : sed 的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
-i : 直接修改读取的文件内容,而不是由屏幕输出
常用命令
a : 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c : 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d : 删除,因为是删除,所以 d 后面通常不接任何内容
i : 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p : 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起用
s : 取代,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。
常见用法
1)替换文本中所有的空为*,并不在屏幕输出
sed -i ‘s/ /*/g’ abc.txt
2)替换文本中第3个匹配上的pattern 为other
sed ‘s/pattern/other/3’ abc.txt
3)打印发生替换的行
sed -n ‘s/pattern/other/p’ abc.txt
4)打印文本得10-20行
sed -n ‘10,20p’ abc.txt
5)替换能匹配到for的行中的pattern字符串为空
sed ‘/for/ s//pattern/g’ abc.txt
6)替换能匹配for到end的所有行中的pattern字符串为空
sed ‘/for/,/end/ s//pattern/g’ abc.txt
7)删除空白行
sed ‘/^$/d’ abc.txt
8)删除第2-10行
sed ‘2,10d’ abc.txt
9)删除以The开头的行
sed '/^The/'d abc.txt
10)直接修改在匹配到end的行的后面追加This is end
sed -i ‘/end/a\This is end’ abc.txt

3、sord

常用选项
-u 它的作用很简单,就是在输出行中去除重复行,只保留其中的第一条。
-r sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。
-o 将排序后的结果写入原文件
-n 使用-n选项,来告诉sort,“要以数值来排序”!
-t和-k sort提供了-t选项,后面可以设定间隔符,指定了间隔符之后,就可以用-k来指定列数了
-c 检查文件是否已经排序
-b 忽略每行开头的空格字符,从第一个可见字符开始比较
-f 忽视大小写进行排序
常见用法
1)简单排序‘
sort abc.txt
2)对文本进行冒号分割后的第二列进行排序
sort -t: -k2n abc.txt
3)对文本进行冒号分割,然后先对第二列进行数值排序,如果相同在根据第三列进行数值排序
sort -t: -k2n -k3n abc.txt
4)如果需要排序后去重,一般搭配uniq一起 使用,如排序后去重并计数
sort abc.txt | uniq -c
5)排序后去重,并显示重复项
sort abc.txt | uniq -d
6)排序后去重,并显示不重复项
sort abc.txt | uniq -u
-n 最多显示多少行
-o 将随机排序后的输出写到一个文件中
http://www.bioinfo-scrounger.com/archives/273

发布了28 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43949246/article/details/95174741