導航:首頁 > 凈水問答 > linux過濾重復行

linux過濾重復行

發布時間:2020-12-18 03:43:40

A. LINUX中如何不經過排序刪除文件中重復的行(相同行,只保留一個)

樓上 uniq必須是連續的重復才行把

用awk肯定行

這是一個cu的精華帖,差不多,對於你的問題你給稍等我修改一下。(ps感謝紅袖添香大姐)
CU精華 經典回顧

#假設我有如下文件:
#cat aa
#123 def1 456
#345 def2 812
#123 def3 563
#322 def4 684
#123 def5 879
#......................
#現在我想把第一列中欄位相同的合並,第一列不相同的則保留,合並的原則就是保留第一個出現的前兩個欄位,第三個欄位則把結果相加,以上面的示例為例:
#
#就是對於123開頭的需要合並,合並後應該成為如下:
#cat aa
#123 def1 1898
#345 def2 812
#322 def4 684
#用shell如何實現?
#希望各位幫助,,謝謝,,

#要求總結:
#1 合並相同的第一列數據,並且計算第三列和
#2 第二列只保留第一次出現
#3 第一列順序不變

覺得這個問題很經典,所以從CU論壇轉過來了。
請大家一起學習

我們站在巨人的肩膀上。

問題補充:

看不太懂實現可以講一下思路嗎?

a[$1]+=$3
if(length(b[$1])==0)b[$1]=$2
我是這樣做的
--------------------------2
謝謝你的補充, 已經明白了你對split的適用技巧,是用split(a[$1],tmp)在碰到匹配的$1時取出以前的統計結然後再用$3加上以前的結果是吧,很巧妙。謝謝
但是有2個問題:
1不滿足 第二列保留第一次出現記錄(現在是保留最後一次出現)
2不滿足 第一列按照原來文件順序出現

看看這個
awk 'BEING{n=0}
{
a[$1]+=$3
if(length(b[$1])==0)b[$1]=$2
if($1 in ind)next
ind[$1]
key[n]=$1
n++
}
END{
for(i in key)print key[i],b[key[i]],a[key[i]]
}' filename

#######################
#######################
#######################
這樣就行了
#,/bin/bash

awk 'BEGIN{n=0}
{
if($0 in a)next
a[$0]
b[n]=$0
n++
}
END{
for(i in b)print b[i]
}' data

前提是你的數據文件裡面每行沒有空格,如果有用-F設定一個沒有的字元作分隔符就。

B. Linux shell awk怎麼去除行內,重復列

awk-F"[-,]"'{for(i=1;i<=NF;i++)a[$i,NR]++}{for(jina){split(j,b,SUBSEP);if(b[2]==NR)printfb[1]""}printf"
"}'關鍵詞.txt>去除重復後.txt

以此例測試通過。


關於awk二維數組的使用:

awk的多維數組在本質上內是一維數組,更確切一容點,awk在存儲上並不支持多維數組。awk提供了邏輯上模擬二維數組的訪問方式。例如,array[2,4] = 1這樣的訪問是允許的。awk使用一個特殊的字元串SUBSEP (34)作為分割欄位,在上面的例子中,關聯數組array存儲的鍵值實際上是2344。
類似一維數組的成員測試,多維數組可以使用if ( (i,j) in array)這樣的語法,但是下標必須放置在圓括弧中。
類似一維數組的循環訪問,多維數組使用for ( item in array )這樣的語法遍歷數組。與一維數組不同的是,多維數組必須使用split()函數來訪問單獨的下標分量。split ( item, subscr, SUBSEP)。

C. LINUX如何刪除一個文件中的重復行後並保持原來順序

man
uniq
uniq
file_name
刪除重復的行(重復的行只保留1個)
uniq
-u
file_name
只保留唯一的行(重復的行全部被刪除)
但它只能處理相鄰的重復行

D. linux 去除空行,去除重復,去除特定符號

cat /etc/services | sed "/^$/d" | uniq | sed "/^#/d"
cat /etc/services 打開文件 是你自己說用cat的,這里可專以不用屬cat的
|是管道
sed "/^$/d" 刪除空行
uniq排除重復的行
sed "/^#/d" 刪除以#開頭的行

E. linux去除重復行命令 重復行不固定。不是相鄰的 求命令

sort aaa.txt | uniq > xxx.txt

F. linux grep查詢結果再過濾

令|

grep查詢過濾需要使用管道命令|。

舉例說明:

1、在進程表中查找特定進程的命令通常如專下:

G. 如何快速刪除Linux文件中的重復數據行

用uniq,如下,抄將 1.txt 中 所有 "相鄰" 重復行合並成一行,結果存入 2.txt

uniq1.txt>2.txt

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

uniq-u1.txt>2.txt

H. linux寫一個shell命令行從一個文件中存儲刪除重復行 在另一個文件的輸出。不使用任何腳本

使用sort命令的-u選項即可:
sort -u file1 >file2

I. LINUX下去除文件中重復的行

比如你/etc/passwd文件中有重復的行,執行如下指令清除:
cat /etc/passwd | sort -u > /tmp/passwd

這樣/tmp/passwd中就沒有重復的行了

J. 如何快速刪除Linux文件中的重復數據行

可以借抄助awk來實現,准備處理的文件是 $filename

awk'{if(line[$0]==1){next;}else{print$0;line[$0]=1}}'<(cat$(filename)>$filename

便可以實現每一行只出現一次,且順序保持不變

閱讀全文

與linux過濾重復行相關的資料

熱點內容
魔獸關閉語言過濾器最新 瀏覽:187
優山美地空氣凈化器怎麼使用 瀏覽:645
能過濾水中藻類凈水器 瀏覽:7
凈化器不吸熱怎麼辦 瀏覽:628
污水倒虹吸管是什麼材質的 瀏覽:631
污水處理廠要用什麼規范 瀏覽:310
二級反滲透水回收率 瀏覽:479
什麼精度的濾水器可以過濾水垢 瀏覽:612
機油濾芯換完發熱怎麼回事 瀏覽:303
溫泉洗浴污水 瀏覽:444
帝豪gl的空氣濾芯是什麼牌子的 瀏覽:295
中山潔鼎過濾器 瀏覽:823
淡化食鹽水為什麼蒸餾 瀏覽:79
華鎣污水處理招聘信息 瀏覽:703
泉露凈水器哪個型號好 瀏覽:781
污水治理方案大全 瀏覽:513
納濾濃縮除鹽原理 瀏覽:308
叉車蒸餾水多久加一次 瀏覽:999
怎麼測試空氣凈化器數值准確 瀏覽:978
軟化水制備濃水回用 瀏覽:626