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

       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的大小分割文件

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章