shell文字分割 擷取 去重方法

2021-10-11 05:15:24 字數 1946 閱讀 8875

./aa/sdf/dslkfjuklsdfjlksjdf

./aa/sdf/dslkfjuklsdfjlksjdf

./bb/sdf2/dslkfjuklsdfjlksjdf

./bb/sdf2/dslkfjuklsdfjlksjdf

./bb/sdf2/dslkfjuklsdfjlksjdf

./bb/sdf2/dslkfjuklsdfjlksjdf

./cc/sdf3/dslkfjuklsdfjlksjdf

清洗目標為:

aa/sdf

bb/sdf2

cc/sdf3

用到cut -d、-f命令、詳情檢視:

cut -f field_list filename

field_list是需要顯示的列。它由列好組成,彼此之間用逗號分隔。例如:

cut -f 2,3 filename

這條命令將顯示第2列和第3列。

製表符是字段或列的預設定界符。沒有定界符的行也會照原樣列印出來。要避免列印出這種不包含定界符的行,則可以使用cut的-s選項。

要指定字元的定界符,使用-d選項。

另外,cut命令還可以將一串字元作為列來顯示。

-b 表示位元組;

-c 表示字元;

-f 表示定義字段。

下表列出了字元範圍的記法:

記法範圍

n-從第n個位元組,字元或字段到行尾

n-m從第n個位元組,字元或字段到第m個(包括第m個在內)位元組、字元或字段

-m第1個位元組,字元或字段到第m個(包括第m個在內)位元組、字元或字段

#-d 後面是分割的內容,-f 2-3是取出第二和第三個,從0開始

cat test.txt |cut -d / -f 2-3

第一步得到的結果:

aa/sdf

aa/sdf

bb/sdf2

bb/sdf2

bb/sdf2

bb/sdf2

cc/sdf3

去重的方式有幾種、用到的命令有sort、uniq

sort詳情:

將第一步的結果寫到t.log下

方式1

sort -u +檔名

sort -u t.log  或者 cat t.log |sort -u
結果

aa/sdf

bb/sdf2

cc/sdf3

方式2

使用uniq,uniq達到去重的目的,需要與sort結合使用。先排序再去重,否則達不到去重的目的!

sort t.log |uniq
結果

aa/sdf

bb/sdf2

cc/sdf3

檢視沒有重複的記錄 uniq -u

temp]$ sort t.log |uniq -u
結果

cc/sdf3
檢視發生重複的記錄 uniq -d

sort t.log |uniq -d
結果

aa/sdf

bb/sdf2

如果要檢視每個重複的數量可以使用uniq -dc (c是用來計數)

sort t.log |uniq -dc
結果

2 aa/sdf

4 bb/sdf2

python實現文字分割

文字分割是自然語言理解資料預處理中的重要步驟,本段程式實現的是用 分割文章,並且分割子句單句成行 import re pattern r 正則匹配模式,用 表示至少乙個字元 flags sentence txt with open test.txt r encoding utf 8 as reade...

Shell指令碼分割字串

以字元進行切割時 從字串左邊開始計數 如果想從字串的左邊開始計數,那麼擷取字串的具體格式如下 其中,string 是要擷取的字串,start 是起始位置 從左邊開始,從 0 開始計數 length 是要擷取的長度 省略的話表示直到字串的末尾 url c.biancheng.net echo 結果為b...

個人筆記 C txt文字分割器

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...