真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux刪除重復(fù)項(xiàng)命令 linux去除重復(fù)空格

如何快速刪除Linux文件中的重復(fù)數(shù)據(jù)行

用uniq,如下,將 1.txt 中 所有 "相鄰" 重復(fù)行合并成一行,結(jié)果存入 2.txt

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比修武網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式修武網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋修武地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

uniq?1.txt??2.txt

如果是想將相鄰重復(fù)行徹底刪掉(而不是合并成一行),可以用

uniq?-u?1.txt??2.txt

linux去重命令

linux去重命令是什么呢?

在介紹uniq命令之前,我們先來(lái)新建在下面的案例中需要用到的文件/tmp/uniq.txt,內(nèi)容如下

默認(rèn)情況下uniq只會(huì)檢索相鄰的重復(fù)數(shù)據(jù)從而去重。在/tmp/uniq.txt中雖然“onmpw web site” 有三條,但是其中一條是和其他兩條不相鄰的,所以只去重了一條,同理“error php function”也是這種情況。

鑒于以上的檢索機(jī)制,所以u(píng)niq一般情況下要和sort命令一塊兒使用。

復(fù)制代碼

# sort 1.txt | uniq

alpha css web

cat linux command

error php function

hello world

onmpw web site

recruise page site

repeat no data

wello web site

復(fù)制代碼

現(xiàn)在再看是不是所有的重復(fù)項(xiàng)都已經(jīng)經(jīng)過(guò)去重處理了。

好了,小試牛刀一把以后,下面我們開(kāi)始對(duì)uniq命令的選項(xiàng)進(jìn)行簡(jiǎn)單的介紹。

-c 統(tǒng)計(jì)每一行數(shù)據(jù)的重復(fù)次數(shù)

復(fù)制代碼

sort 1.txt | uniq -c

1 alpha css web

1 cat linux command

2 error php function

1 hello world

3 onmpw web site

1 recruise page site

1 repeat no data

1 wello web site

復(fù)制代碼

我們看 “error php function”出現(xiàn)了兩次,“onmpw web site”出現(xiàn)了三次。其余的都沒(méi)有重復(fù)項(xiàng)所以為1。

-i 忽略大小寫(xiě)

在1.txt中添加一行數(shù)據(jù) “Error PHP function”

復(fù)制代碼

cat 1.txt

alpha css web

cat linux command

error php function

hello world

onmpw web site

onmpw web site

wello web site

Error PHP function

recruise page site

error php function

repeat no data

onmpw web site

復(fù)制代碼

復(fù)制代碼

sort 1.txt | uniq –c

1 alpha css web

1 cat linux command

2 error php function

1 Error PHP function

1 hello world

3 onmpw web site

1 recruise page site

1 repeat no data

1 wello web site

復(fù)制代碼

我們看結(jié)果,uniq默認(rèn)是區(qū)分大小寫(xiě)的。使用-i可以忽略掉大小寫(xiě)問(wèn)題

復(fù)制代碼

sort 1.txt | uniq –c –i

1 alpha css web

1 cat linux command

3 error php function

1 hello world

3 onmpw web site

1 recruise page site

1 repeat no data

1 wello web site

復(fù)制代碼

現(xiàn)在再看是不是大小寫(xiě)已經(jīng)忽略掉了。

-u 只輸出沒(méi)有重復(fù)的數(shù)據(jù)

復(fù)制代碼

sort 1.txt | uniq –iu

alpha css web

cat linux command

hello world

recruise page site

repeat no data

wello web site

復(fù)制代碼

看到?jīng)],結(jié)果中的“error php function”和“onmpw web site”都沒(méi)有被輸出。

-w N 表示從第一個(gè)字符開(kāi)始只檢索N個(gè)字符來(lái)判重。

復(fù)制代碼

sort 1.txt | uniq –iw 2

alpha css web

cat linux command

error php function

hello world

onmpw web site

recruise page site

wello web site

復(fù)制代碼

這里我們讓uniq只對(duì)前兩個(gè)字符進(jìn)行檢索,recruit 和 repeat前兩個(gè)字符都是re,所以這兩行也被認(rèn)為是重復(fù)的。

-f N 表示略過(guò)前面N個(gè)字段,從第N+1個(gè)字段開(kāi)始檢索重復(fù)數(shù)據(jù)。以空格符或者tab鍵為分隔符。

復(fù)制代碼

sort 1.txt | uniq –icf 2

1 alpha css web

1 cat linux command

3 error php function

1 hello world

4 onmpw web site

1 repeat no data

1 wello web site

復(fù)制代碼

我們?cè)诮Y(jié)果中可以看到,這是略過(guò)前面的2個(gè)字段,從第三個(gè)字段開(kāi)始判重的?!皉ecruise page site” 和 “onmpw web site”的第三個(gè)字段相同,所以被認(rèn)為是相同的數(shù)據(jù)。但是我們看到,“wello web site”和“onmpw web site”不但第三個(gè)字段相同,第二個(gè)也相同。那為什么它不被計(jì)入“onmpw web site”的重復(fù)數(shù)據(jù)中呢。對(duì)于這個(gè)問(wèn)題就要回到前面說(shuō)的,uniq只檢測(cè)相鄰的數(shù)據(jù)是否是重復(fù)的。

要解決這個(gè)問(wèn)題還需要在sort命令上著手。還記得sort命令的-k選項(xiàng)嗎,沒(méi)錯(cuò),我們就用它來(lái)解決。

復(fù)制代碼

sort –k 2 1.txt | uniq –icf 2

1 alpha css web

1 cat linux command

1 repeat no data

1 recruise page site

3 error php function

4 onmpw web site

1 hello world

復(fù)制代碼

我們看,是不是解決了。

-s N表示略過(guò)前面N個(gè)字符,關(guān)于這個(gè)選項(xiàng)的例子我們這里就不再舉了,該選項(xiàng)和-f N的用法差不多。只不過(guò)-f N是略過(guò)前面N個(gè)字段;-s是略過(guò)前面N個(gè)字符。

-d 只輸出有重復(fù)項(xiàng)的第一條的數(shù)據(jù)。

sort 1.txt | uniq -idw 2

repeat no data

error php function

onmpw web site

結(jié)果只有這三條。為什么會(huì)有“repeat no data”這條數(shù)據(jù),這里注意-w 2的應(yīng)用。

-D 對(duì)于重復(fù)項(xiàng)全部輸出

復(fù)制代碼

sort 1.txt | uniq –iDw 2

repeat no data

recruise page site

error php function

error php function

Error PHP function

onmpw web site

onmpw web site

onmpw web site

復(fù)制代碼

好了,關(guān)于uniq的選項(xiàng)的所有常用的命令已經(jīng)都介紹完了。關(guān)于uniq更詳細(xì)的信息可以使用命令info uniq。

【shell】Linux刪除文本重復(fù)行

通常如果我們想獲取一個(gè)文件里不重復(fù)的行的時(shí)候,我們可以直接通過(guò)?sort?-u?命令,先把文件排序,然后去掉連續(xù)的重復(fù)行就行。

可是,如果我們?nèi)サ糁貜?fù)行之后,還想保留文件原有的順序,該怎么辦呢?

雖然 Linux 下有個(gè)看上去似乎很有用的命令叫uniq,但事實(shí)上?uniq?命令僅僅只對(duì)連續(xù)的重復(fù)行有效。

如果不排序,直接使用 uniq 命令是沒(méi)有用的;使用?sort?-u?的話,我們就丟失了文件原有的行的順序了。

一個(gè)終極的解決方案是使用 awk:

簡(jiǎn)要解釋一下:awk 的基本執(zhí)行流程是,對(duì)文件的每一行,做一個(gè)指定的邏輯判斷,如果邏輯判斷成立,則執(zhí)行指定的命令;如果邏輯判斷不成立,則直接跳過(guò)這一行。

我們這里寫(xiě)的 awk 命令是!x[$0]++,意思是,首先創(chuàng)建一個(gè) map 叫x,然后用當(dāng)前行的全文$0作為 map 的 key,到 map 中查找相應(yīng)的 value,如果沒(méi)找到,則整個(gè)表達(dá)式的值為真,可以執(zhí)行之后的語(yǔ)句;如果找到了,則表達(dá)式的值為假,跳過(guò)這一行。

由于表達(dá)式之后有++,因此如果某個(gè) key 找不到對(duì)應(yīng)的 value,該++操作會(huì)先把對(duì)應(yīng)的 value 設(shè)成 0,然后再自增成 1,這樣下次再遇到重復(fù)的行的時(shí)候,對(duì)應(yīng)的 key 就能找到一個(gè)非 0 的 value 了。

我們前面說(shuō)過(guò),awk 的流程是先判斷表達(dá)式,表達(dá)式為真的時(shí)候就執(zhí)行語(yǔ)句,可是我們前面寫(xiě)的這個(gè) awk 命令里只有表達(dá)式,沒(méi)有語(yǔ)句,那我們執(zhí)行什么呢?原來(lái),當(dāng)語(yǔ)句被省略的時(shí)候,awk 就執(zhí)行默認(rèn)的語(yǔ)句,即打印整個(gè)完整的當(dāng)前行。就這樣,我們通過(guò)這個(gè)非常簡(jiǎn)短的 awk 命令實(shí)現(xiàn)了去除重復(fù)行并保留原有文件順序的功能。

利用Linux命令行進(jìn)行文本按行去重并按重復(fù)次數(shù)排序

利用linux命令行進(jìn)行文本按行去重并按重復(fù)次數(shù)排序linux命令行提供了非常強(qiáng)大的文本處理功能,組合利用linux命令能實(shí)現(xiàn)好多強(qiáng)大的功能。本文這里舉例說(shuō)明如何利用linux命令行進(jìn)行文本按行去重并按重復(fù)次數(shù)排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是實(shí)現(xiàn)相鄰文本行的去重,cut可以從文本行中提取相應(yīng)的文本列(簡(jiǎn)單地說(shuō),就是按列操作文本行)。用于演示的測(cè)試文件內(nèi)容如下:[plain]Hello

World.

Apple

and

Nokia.

Hello

World.

I

wanna

buy

an

Apple

device.

The

Iphone

of

Apple

company.

Hello

World.

The

Iphone

of

Apple

company.

My

name

is

Friendfish.

Hello

World.

Apple

and

Nokia.

實(shí)現(xiàn)命令及過(guò)程如下:[plain]1、文本行去重

(1)排序

由于uniq命令只能對(duì)相鄰行進(jìn)行去重復(fù)操作,所以在進(jìn)行去重前,先要對(duì)文本行進(jìn)行排序,使重復(fù)行集中到一起。

$

sort

test.txt

Apple

and

Nokia.

Apple

and

Nokia.

Hello

World.

Hello

World.

Hello

World.

Hello

World.

I

wanna

buy

an

Apple

device.

My

name

is

Friendfish.

The

Iphone

of

Apple

company.

The

Iphone

of

Apple

company.

(2)去掉相鄰的重復(fù)行

$

sort

test.txt

|

uniq

Apple

and

Nokia.

Hello

World.

I

wanna

buy

an

Apple

device.

My

name

is

Friendfish.

The

Iphone

of

Apple

company.

2、文本行去重并按重復(fù)次數(shù)排序

(1)首先,對(duì)文本行進(jìn)行去重并統(tǒng)計(jì)重復(fù)次數(shù)(uniq命令加-c選項(xiàng)可以實(shí)現(xiàn)對(duì)重復(fù)次數(shù)進(jìn)行統(tǒng)計(jì)。)。

$

sort

test.txt

|

uniq

-c

2

Apple

and

Nokia.

4

Hello

World.

1

I

wanna

buy

an

Apple

device.

1

My

name

is

Friendfish.

2

The

Iphone

of

Apple

company.

(2)對(duì)文本行按重復(fù)次數(shù)進(jìn)行排序。

sort

-n可以識(shí)別每行開(kāi)頭的數(shù)字,并按其大小對(duì)文本行進(jìn)行排序。默認(rèn)是按升序排列,如果想要按降序要加-r選項(xiàng)(sort

-rn)。

$

sort

test.txt

|

uniq

-c

|

sort

-rn

4

Hello

World.

2

The

Iphone

of

Apple

company.

2

Apple

and

Nokia.

1

My

name

is

Friendfish.

1

I

wanna

buy

an

Apple

device.

(3)每行前面的刪除重復(fù)次數(shù)。

cut命令可以按列操作文本行。可以看出前面的重復(fù)次數(shù)占8個(gè)字符,因此,可以用命令cut

-c

9-

取出每行第9個(gè)及其以后的字符。

$

sort

test.txt

|

uniq

-c

|

sort

-rn

|

cut

-c

9-

Hello

World.

The

Iphone

of

Apple

company.

Apple

and

Nokia.

My

name

is

Friendfish.

I

wanna

buy

an

Apple

device.

下面附帶說(shuō)一下cut命令的使用,用法如下:[plain]cut

-b

list

[-n]

[file

...]

cut

-c

list

[file

...]

cut

-f

list

[-d

delim][-s][file

...]

上面的-b、-c、-f分別表示字節(jié)、字符、字段(即byte、character、field);

list表示-b、-c、-f操作范圍,-n常常表示具體數(shù)字;

file表示的自然是要操作的文本文件的名稱;

delim(英文全寫(xiě):delimiter)表示分隔符,默認(rèn)情況下為TAB;

-s表示不包括那些不含分隔符的行(這樣有利于去掉注釋和標(biāo)題)

三種方式中,表示從指定的范圍中提取字節(jié)(-b)、或字符(-c)、或字段(-f)。

范圍的表示方法:

n

只有第n項(xiàng)

n-

從第n項(xiàng)一直到行尾

n-m

從第n項(xiàng)到第m項(xiàng)(包括m)

-m

從一行的開(kāi)始到第m項(xiàng)(包括m)

-

從一行的開(kāi)始到結(jié)束的所有項(xiàng)

在寫(xiě)這篇文章的時(shí)候,用到了vim的大小寫(xiě)轉(zhuǎn)化的快捷鍵:gu變小寫(xiě),gU變大寫(xiě)。結(jié)合ctrl+v能夠?qū)⒁黄淖种械淖址M(jìn)行大小寫(xiě)轉(zhuǎn)換,非常好用。


文章題目:linux刪除重復(fù)項(xiàng)命令 linux去除重復(fù)空格
文章源于:http://weahome.cn/article/ddghecc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部