文本处理小工具

Posted 还行少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本处理小工具相关的知识,希望对你有一定的参考价值。


一、cut

cut:列截取工具

选项

b按字节截取
c按字符截取,常用于中文
d指定分割符截取,默认为空格和制表符
f通常和-d一起 ,选择列

示例

1.截取系统中前十个用户名

[root@localhost ~]# cat /etc/passwd | head | cut -d ":" -f 1
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
[root@localhost ~]# 

2.截取文件中的每列第一个字节

[root@localhost ~]# cat /etc/passwd | head | cut -b 1
r
b
d
a
l
s
s
h
m
o
[root@localhost ~]#

二、sort

sort:排序工具

常用选项

t指定分隔符,默认使用[Tab]键或空格分隔
k指定排序区域,哪个区间排序
n按照数字进行排序,默认是以文字形式排序
u等同于 uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
r反向排序,默认是升序,-r就是降序
o将排序后的结果转存至指定文件

示例

1.不加任何选项默认按第一列升序,字母的话就是从a到z由上而下显示

[root@localhost ~]# cat /etc/passwd | head -n 5|  cut -d ":" -f 1,3 | sort
adm:3
bin:1
daemon:2
lp:4
root:0

2 以冒号为分隔符,以数字大小对第二列排序(降序)

[root@localhost ~]# cat /etc/passwd | head -n 5|  cut -d ":" -f 1,3 | sort -nr -t: -k2
lp:4
adm:3
daemon:2
bin:1
root:0
[root@localhost ~]#

三、uniq

uniq:去重工具

通常和sort结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重

常用选项

c对重复的行进行计数
d仅显示重复行
u仅显示出现一次的行

示例

1.去除连续的重复行

[root@localhost ~]# cat test 
aaa
bbb
bbb
ccc
ddd
ddd
abc
abc
ddd
abc
[root@localhost ~]# uniq test 
aaa
bbb
ccc
ddd
abc
ddd
abc
[root@localhost ~]# 

2.统计重复行的次数,不连续的重复行他不算做重复行

[root@localhost ~]# uniq -c test 
      1 aaa
      2 bbb
      1 ccc
      2 ddd
      2 abc
      1 ddd
      1 abc
[root@localhost ~]# 

3.结合sort使用,去重(相当于 sort -u)

[root@localhost ~]# sort test | uniq
aaa
abc
bbb
ccc
ddd
[root@localhost ~]# 

四、tr

tr:字符去重工具

它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符

常用选项

d删除字符
s删除所有重复出现的字符,只保留第一个

示例

1.替换a为A

[root@localhost ~]# cat test | tr 'a' 'A'
AAA
bbb
bbb
ccc
ddd
ddd
Abc
Abc
ddd
Abc
[root@localhost ~]# 

2.删除所有a

[root@localhost ~]# cat test | tr -d 'a'

bbb
bbb
ccc
ddd
ddd
bc
bc
ddd
bc
[root@localhost ~]#

3.对a去重

[root@localhost ~]# cat test | tr -s 'a'
a
bbb
bbb
ccc
ddd
ddd
abc
abc
ddd
abc
[root@localhost ~]# 

以上是关于文本处理小工具的主要内容,如果未能解决你的问题,请参考以下文章

android小知识点代码片段

编程小技巧之 Linux 文本处理命令

PHP:多行文本框的便捷小片段

文本处理小工具

VS中添加自定义代码片段——偷懒小技巧

shell编程之文本小工具