Linux系统学习之字符处理
Posted 挑战者V
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统学习之字符处理相关的知识,希望对你有一定的参考价值。
管道
管道是一种使用非常频繁的通信机制,我们可以使用管道符"|"来连接进程,
由管道连接起来订单进程可以自动运行,如同有一个数据流一样,所以管道表现为输入输出重定向的一种方法,
它可以把一个命令的输出内容当作下一个命令的输入内容,两个命令之间只需要管道符连接即可
使用grep搜索文本
grep [-ivnc] ‘需要匹配的字符‘ 文件名
#-i 不区分大小写
#-c 统计包含匹配的行数
#-n 输出行号
#-v 反向匹配
例子:
[[email protected] ~]# cat test.txt
The cat‘s name is Tom,What‘s the mouse‘s name?
The mouse‘s NAME is Jerry
They are good friends
[[email protected] ~]# grep ‘name‘ test.txt //搜索含有‘name‘的句子
The cat‘s name is Tom,What‘s the mouse‘s name?
[[email protected] ~]# grep -i ‘name‘ test.txt //搜索含有‘name‘的句子,忽略大小写
The cat‘s name is Tom,What‘s the mouse‘s name?
The mouse‘s NAME is Jerry
[[email protected] ~]# grep -c ‘name‘ test.txt//含‘name‘的句子有多少条
1
[[email protected] ~]# grep -ci ‘name‘ test.txt//含‘name‘的句子有多少条,大小写可忽略
2
[[email protected] ~]# grep -v ‘name‘ test.txt //搜索不含‘name‘的句子
The mouse‘s NAME is Jerry
They are good friends
[[email protected] ~]# grep -vi ‘name‘ test.txt//搜索不含‘name‘的句子,大写的NAME也过滤掉
They are good friends
[[email protected] ~]# cat test.txt
The cat‘s name is Tom,What‘s the mouse‘s name?
The mouse‘s NAME is Jerry
They are good friends
[[email protected] ~]# cat test.txt | grep -vi ‘name‘ ? //以上命令都可以使用管道符改写,比如上一个命令可以这样写,意思都是一样的
They are good friends
使用sort排序
sort [-ntkr] 文件名
#-n 采取数字排序
#-t 指定分隔符
#-k 指定第几列
#-r 反向排序
[[email protected] ~]# cat sort.txt
b:3
c:2
a:4
e:5
d:1
f:11
[[email protected] ~]# cat sort.txt | sort //按字母正向排序
a:4
b:3
c:2
d:1
e:5
f:11
[[email protected] ~]# cat sort.txt | sort -r //按字母反向排序
f:11
e:5
d:1
c:2
b:3
a:4
[[email protected] ~]# cat sort.txt | sort -t ":" -k 2 -n
d:1
c:2
b:3
a:4
e:5
f:11
使用uniq删除重复内容
uniq [-ic] #-i 忽略大小写 #-c 计算重复内容 [[email protected] ~]# cat uniq.txt | sort | uniq //需要说明的是uniq命令一般需要和sort一起使用,也就是先将文件使用进行sort排序,然后再使用uniq删除重复的内容。单独加上uniq不加sort是没有效果的。 123 abc 补充说明: [[email protected] ~]# cat uniq.txt | uniq abc 123 abc 123 [[email protected] ~]# cat uniq.txt | sort | uniq -c //使用-c参数就会在每行前面打印出改行重复的次数 2 123
使用cutt截取文本、使用tr做文本转换、使用paste做文本合并(还有一个文件分割用split做,这里不再说了,我目前想不到它到底有什么用)
cut -f 指定列 -d ‘分隔符‘
[[email protected] ~]# cat /etc/passwd | cut -f1 -d ‘:‘
root
bin
daemon
admin
tr命令比较简单,其主要作用在于文本转换或删除
[[email protected] ~]# cat /etc/passwd | tr ‘[a-z]‘ ‘[A-Z]‘
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
paste的作用在于将文件按照行进行合并,中间使用tab隔开
[[email protected] ~]# cat a.txt
a b c
[[email protected] ~]# cat b.txt
a b c
[[email protected] ~]# paste a.txt b.txt
a b c a b c
以上是关于Linux系统学习之字符处理的主要内容,如果未能解决你的问题,请参考以下文章