linux shell中常见文本处理:去重(uniq)、文本截取(cut)、文本转换(tr)、文本合并(paste)、文件分割(split)

1、文本去重 uniq

usage: uniq [-ic]

-i 忽略大小写

-c 计算重复行数

$ cat aa.txt 
bb 3
aa 2
bb 3
bb 3
aa 2


$ cat aa.txt | sort -t" " -k 2| uniq -ic 
   2 aa 2
   3 bb 3

2、使用 cut 截取文本

usage:

usage: cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-s] [-d delim] [file ...]

cut -f 指定的列 -d "分隔符"

cut -c 指定列的字符

eg:

cut -f 1,3 -d ":" file    #获取文件中:分割后的第一 、三列

cut -f 1-3 -d ":" file   #获取文件中:分割后的第一至第三列 

eg:获取文件中的第一列 

$ cat aa.txt 
bb 3
aa 2
bb 3
bb 3
aa 2
$ cat aa.txt | cut -f 1 -d " "
bb
aa
bb
bb
aa

# 获取文件中第一个字符
$ cat aa.txt | cut -c 1
b
a
b
b
a

# 获取文件中第一个和第二个字符
$ cat aa.txt | cut -c 1-2
bb
aa
bb
bb
aa

 

3、tr 进行文本转换

usage: tr [-Ccsu] string1 string2

       tr [-Ccu] -d string1

扫描二维码关注公众号,回复: 9545993 查看本文章

       tr [-Ccu] -s string1

       tr [-Ccu] -ds string1 string2

eg:

# 将小写替换成大写输出

$ cat aa.txt | tr '[a-z]' '[A-Z]'
BB 3
AA 2
BB 3
BB 3
AA 2

#替换文本中指定内容

$ cat aa.txt | tr “aa” "AA"
bb 3
AA 2
bb 3
bb 3
AA 2

 

4、paste 文本合并

usage:

paste [-d "分隔符"]   fileA  fileB

# 将A b两个文件用“:”分隔后,进行拼接,

$ cat A.txt 
a
b
c
d

$ cat B.txt 
2
3
4
5
6
7

$ paste -d ":" A.txt B.txt 
a:2
b:3
c:4
d:5
:6
:7

5、使用split分割大文件

usage: split [-a sufflen] [-b byte_count] [-l line_count] [-p pattern]
             [file [prefix]]

-l 按行分割

-b 按照文件大小分割  #二进制文件无行的概念,只能按照指定的大小进行分割

eg:

$ split -l 10  demo.txt split_dir/    #按照每10行分割demo.txt文件 ,将分割的文件保存到split_dir 文件夹中

$ cd split_dir/
$ ls     # 查看分割文件目录,可以看到分割的众多子文件
aa	ac	ae	ag	ai	ak	am	ao	aq	as	au	aw	ay	ba
ab	ad	af	ah	aj	al	an	ap	ar	at	av	ax	az	bb


$ split -b 1m  demo.txt split_dir/ #按照每个分割文件1m的大小分割文件
发布了99 篇原创文章 · 获赞 25 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_39568531/article/details/102990201