新聞中心
如何使用Linux Sort去除重復(fù)值?

為齊齊哈爾等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及齊齊哈爾網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、齊齊哈爾網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
對于Linux用戶來說,去除重復(fù)值是一項常見任務(wù)。Linux的sort命令提供了一種簡單且有效的方法來實現(xiàn)這一目標(biāo)。排序可以將重復(fù)值放在一起,然后可以很容易地通過使用uniq來去除它們。本文將介紹如何使用sort命令去除重復(fù)值。
什么是Linux Sort?
sort是Linux中一個非常常用的命令。它的作用是將文件內(nèi)容按照一定的規(guī)則進(jìn)行排序。sort命令可用于對文本、數(shù)值和二進(jìn)制文件進(jìn)行排序。它默認(rèn)按照字母順序升序排列文本文件,但可以使用命令選項控制排序方式。
如何使用Linux Sort去除重復(fù)值?
默認(rèn)情況下,sort不會自動去除重復(fù)項。要去除重復(fù)值,您需要使用管道將結(jié)果發(fā)送到uniq命令。
以下是使用sort和uniq命令創(chuàng)建一個唯一的值列表的實際例子:
sort file.txt | uniq > unique.txt
在這個例子中,sort命令將file.txt中的內(nèi)容排序。管道符(|)將結(jié)果發(fā)送到 uniq命令去重。將結(jié)果發(fā)送到unique.txt文件中,以便您可以隨時查看結(jié)果。
如果不想向唯一的列表中寫入結(jié)果,而是 ??只想打印結(jié)果,可以省略輸出到文件的重定向:
sort file.txt | uniq
此命令將打印一個在文件file.txt中找到的所有唯一值的列表。
作為一種選擇,可以從sort命令中傳遞“-u”參數(shù)。這將告訴sort僅輸出唯一的值。以下是一個例子:
sort -u file.txt > unique.txt
在這個例子中,sort命令將-file.txt中的內(nèi)容排序,并且僅輸出唯一的值。將結(jié)果發(fā)送到unique.txt文件中以進(jìn)行稍后的訪問。
Sort是Linux中一個非常有用的命令,可用于對文件內(nèi)容進(jìn)行排序。要去除重復(fù)項,可以使用管道將結(jié)果發(fā)送到uniq命令。這將輸出僅包含唯一值的列表。您還可以使用“-u”參數(shù)告訴sort僅輸出唯一的值,但這不是默認(rèn)行為。
去除重復(fù)值是一種常見的任務(wù),僅僅需要幾個簡單的命令就可以實現(xiàn)它。希望這篇文章能夠幫助Linux用戶更好地使用sort命令去掉重復(fù)值。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風(fēng)格,熱線:028-86922220請教linux高手:sed -n ‘s%.* src=\(192.168.[0-9.]*\).*%\1%p’ /proc/net/ip_conntrack | sort |
sort是Linux命令,主要用于排序文件、對已排序的文件進(jìn)行合并,并檢查文件以確定它們是否已排序
語法
sort > > > > … …
sort 命令對 File 參數(shù)指定的文件中的行排序,并將結(jié)果寫到標(biāo)準(zhǔn)輸出。如果 File 參數(shù)指定多個文件,那么 sort 命令將這些文件連接起來,并當(dāng)作一個文件進(jìn)行排序。-(減號)代替文件名指定標(biāo)準(zhǔn)輸入嘩團(tuán)。如果您不指定任何文件名,那么該命令對標(biāo)準(zhǔn)輸入排序??梢允褂?-o 標(biāo)志指定輸出文件。 如果不指定任何標(biāo)志,sort 命令基于當(dāng)前語言環(huán)境的整理順序?qū)斎胛募乃行信判颉?/p>
排序關(guān)鍵字
排序關(guān)鍵字是輸入行的一部分,由字段號和列號指亂碰橘定。字段是輸入行的組成部分,由字段分隔符分隔。缺省字段分隔符是由一個或多個連續(xù)空格字符組成的序列。使用 -t 標(biāo)志可指定不同的字段分隔符。在 C 語言和英語語言環(huán)境下,制表符和空格字符都是空格符。 使用排序關(guān)鍵字時,sort 命令首先根據(jù)之一個排序關(guān)鍵字的內(nèi)容對所有行排序。然后,根據(jù)第二個排序關(guān)鍵字的內(nèi)容,對所有之一個排序關(guān)鍵字相同的行排序,如此進(jìn)行下去。按照排序關(guān)鍵字在命令行中吵好出現(xiàn)的順序給它們編號。如果兩行對所有排序關(guān)鍵字的排序都相同,則對全部行依據(jù)當(dāng)前語言環(huán)境的整理順序進(jìn)行比較。 對字段中的列進(jìn)行編號時,缺省字段分隔符中的空格符將作為后繼字段計數(shù)。前導(dǎo)空格不計作之一字段的一部分,-t 標(biāo)志指定的字段分隔符將不作為字段的一部分計數(shù)??墒褂?-b 標(biāo)志忽略前導(dǎo)空格符。 可使用下列兩種方法定義排序關(guān)鍵字: * -k KeyDefinition * FSkip.CSkip(廢棄版本)。 使用 -k 標(biāo)志定義排序關(guān)鍵字 -k KeyDefinition 標(biāo)志采用下列形式: -k > > > 排序關(guān)鍵字包括所有以 FStart 變量指定的字段和 CStart 變量指定的列開頭的及以 FEnd 變量指定的字段和 CEnd 變量指定的列結(jié)束的字符。如果不指定 Fend,就假定行的最后一個字符。如果不指定 CEnd,就假定 FEnd 字段的最后一個字符。KeyDefinition 變量中的任何字段號或列號都可以省略。缺省值為: FStart 行開頭 CStart 字段之一列 FEnd 行結(jié)束 CEnd 字段最后一列 如果字段間有任意空格,sort 就把它們看作分隔的字段。 Modifier 變量的值可以是字母 b、d、f、i、n 或 r 中的一個或多個。修飾符僅應(yīng)用于它們連接的字段定義,與同一字母的標(biāo)志有同樣的效果。修飾符字母 b 僅應(yīng)用于其連接的字段定義的末尾。例如: -k 3.2b,3r 指定排序關(guān)鍵字,從第三字段的第二非空格列開始并擴展至第三字段結(jié)束,對這個關(guān)鍵字的排序以逆向整理順序完成。如果 FStart 變量和 CStart 變量在命令行末尾以外或在 FEnd 變量和 CEnd 變量之后,那么該排序關(guān)鍵字被忽略。 排序關(guān)鍵字也可用下列方式指定: > > +FSkip1 變量指定跳過的字段數(shù)以到達(dá)排序關(guān)鍵字之一字段,+CSkip 變量指定在該字段中跳過的列數(shù)以到達(dá)排序關(guān)鍵字之一個字符。-FSkip 變量指定跳過的字段數(shù)以到達(dá)排序關(guān)鍵字后的之一個字符,-CSkip 變量指定在該字段中跳過的列數(shù)??梢允÷匀魏我^的字段和列。缺省值為: FSkip1 行開頭 CSkip1 零 FSkip2 行結(jié)束 CSkip2 零 Modifier 變量指定的修改量與 -k 標(biāo)志關(guān)鍵字排序定義中的相同。 因為 +FSkip1.CSkip1 變量指定到達(dá)排序關(guān)鍵字前要跳過多少字段和列,所以這些變量指定的字段號和列號通常比排序關(guān)鍵字本身的字段號和列號小 1。例如: +2.1b -3r 指定排序關(guān)鍵字,從第三字段的第二非空格列開始并擴展至第三字段結(jié)束,對這個關(guān)鍵字的排序以逆向整理順序完成。語句 +2.1b 指定跳過兩個字段,然后跳過前導(dǎo)空格和另一列。如果 +FSkip1.CSkip1 變量在命令行末尾以外或在 -FSkip2.CSkip2 變量之后,則忽略該排序關(guān)鍵字。 注:一行的更大字段數(shù)為 10。
標(biāo)志
注:在任何排序關(guān)鍵字定義前出現(xiàn)的 -b、-d、-f、-i、-n 或 -r 標(biāo)志應(yīng)用于所有排序關(guān)鍵字。-b、-d、-f、-i、-n 或 -r 標(biāo)志都不能單獨出現(xiàn)在 -k KeyDefinition 之后;如果它們作為修飾符連接 KeyDefinition 變量,那么就只應(yīng)用于連接排序關(guān)鍵字。如果這些標(biāo)志之一跟隨在 +Fskip.Cskip 或 -Fskip.Cskip 排序關(guān)鍵字定義后,那么該標(biāo)志只能用于此排序關(guān)鍵字。 -A 使用 ASCII 整理順序代替當(dāng)前語言環(huán)境的整理順序在逐字節(jié)的基礎(chǔ)上排序。 -b 忽略前導(dǎo)空格和制表符,找出字段的之一或最后列。 -c 檢查輸入是否已按照標(biāo)志中指定的排序規(guī)則進(jìn)行排序。如果輸入文件排序不正確,就返回一個非零值。 -d 使用字典順序排序。比較中僅考慮字母、數(shù)字和空格。 -f 比較前將所有小寫字母改成大寫字母。 -i 比較中忽略所有非打印字符。 -k KeyDefinition 指定排序關(guān)鍵字。KeyDefinition 選項的格式為: > > > 排序關(guān)鍵字包括所有以 FStart 變量指定的字段和 CStart 變量指定的列開頭的字符及以 FEnd 變量指定的字段和 CEnd 變量指定的列結(jié)束的字符。Modifier 變量的值可以是 b、d、f、i、n 或 r。 修飾符與同一字母的標(biāo)志等價。 -m 只合并多個輸入文件;假設(shè)輸入文件已經(jīng)排序。 -n 按算術(shù)值對數(shù)字字段排序。數(shù)字字段可包含前導(dǎo)空格、可選減號、十進(jìn)制數(shù)字、千分位分隔符和可選基數(shù)符。對包含任何非數(shù)字字符的字段進(jìn)行數(shù)字排序會出現(xiàn)無法預(yù)知的結(jié)果。 -o OutFile 將輸出指向 OutFile 參數(shù)指定的文件,而不是標(biāo)準(zhǔn)輸出。OutFile 參數(shù)值可以與 File 參數(shù)值相同。 -r 顛倒指定排序的順序。 -t Character 指定 Character 為單一的字段分隔符。 -u 禁止按照排序關(guān)鍵字和選項的所有等同排序(每一組行中一行除外)。 -T Directory 將創(chuàng)建的所有臨時文件放入 Directory 參數(shù)指定的目錄中。 -y 用 Kilobytes 參數(shù)指定的主存儲的千字節(jié)數(shù)啟動 sort 命令,并根據(jù)需要增加存儲量。(如果 Kilobytes 參數(shù)指定的值小于最小存儲站點或大于更大存儲站點,就以這個最小存儲站點或更大存儲站點取代)。如果省略 -y 標(biāo)志,sort 命令以缺省的存儲大小啟動。-y0 標(biāo)志用最小存儲啟動,而 -y 標(biāo)志(不帶 Kilobytes 值)用更大存儲啟動。sort 命令使用的存儲量顯著地影響性能。以大存儲量對小文件排序?qū)⒑芾速M。 -z RecordSize 如果正在排序的任一行大于缺省的緩沖區(qū)大小,要防止出現(xiàn)異常終止。指定 -c 或 -m 標(biāo)志時,省略排序階段,使用系統(tǒng)的缺省緩沖大小。如果已排序行超出這一大小,排序異常終止。-z 選項指定排序階段最長行的記錄,因而可在合并階段分配足夠的緩沖區(qū)。RecordSize 必須指明等于或大于要合并的最長行的字節(jié)值。
退出狀態(tài)
該命令返回以下出口值: 0 所有輸入文件成功輸出,或指定了 -c 且正確排序了輸入文件。 1 在 -c 選項下,文件沒有按指定排序,或如果指定 -c 和 -u 選項,找到了兩個具有相同關(guān)鍵字的輸入行。 >1 發(fā)生錯誤。
示例
1.排序fruits
1. 要在 LC_ALL、LC_COLLATE 或 LANG 環(huán)境變量設(shè)置為 En_US 的情況下排序 fruits 文件,請輸入: LANG=En_US sort fruits 此命令序列顯示以升序詞典順序排序的 fruits 文件的內(nèi)容。每一列的字符,包括空格、數(shù)字和特殊字符都經(jīng)一一比較。例如,如果 fruits 文件包含文本: banana orange Persimmon apple %%banana apple ORANGE sort 命令顯示: %%banana ORANGE Persimmon apple apple banana orange 在 ASCII 整理序列中,%(百分號)在大寫字母前,大寫字母在小寫字母前。如果您當(dāng)前的語言環(huán)境指定 ASCII 之外的字符集,結(jié)果可能不同。
2. 以字典順序排序
sort -d fruits 此命令序列排序和顯示 fruits 文件的內(nèi)容,并且只比較字母、數(shù)字和空格。如果 fruits 文件與示例 1 相同,那么 sort 命令顯示: ORANGE Persimmon apple apple %%banana banana orange -d 標(biāo)志忽略 %(百分號)字符,因為它不是個字母、數(shù)字或空格。(即 %%banana 被 banana 取代)。
3.大小寫字母分組
要將包含大寫字母和具有類似小寫行的特殊字符行分組,請輸入: sort -d -f fruits -d 標(biāo)志忽略特殊字符,-f 標(biāo)志忽略大小寫差異。將 LC_ALL、LC_COLLATE 或 LANG 環(huán)境變量設(shè)置為 C 的情況下,fruits 文件的輸出結(jié)果變?yōu)椋?apple apple %%banana banana ORANGE orange Persimmon
4. 除去重復(fù)行排序
sort -d -f -u fruits -u 標(biāo)志告訴 sort 命令除去重復(fù)的行,使文件中的每一行唯一。此命令序列顯示: apple %%banana orange Persimmon 不僅除去重復(fù)的 apple,而且也除去了 banana 和 ORANGE。除去這些是因為 -d 標(biāo)志忽略 %% 這個特殊字符,-f 標(biāo)志忽略大小寫差異。
5. 除去重復(fù)的實例
sort -u +0 -d -f +0 fruits 輸入 +0 -d -f 完成的排序與示例 3 中 -d -f 的排序類型相同,+0 進(jìn)行另一項比較以區(qū)分不一樣的行。這防止 -u 標(biāo)志將它們除去。 示例 1 所示的 fruits 文件中,添加的 +0 將 %%banana 與 banana 及 ORANGE 與 orange 區(qū)分開來。然而,apple 的兩個實例是相同的,所以其中之一被刪除。 apple %%banana banana ORANGE orange Persimmon
6. 指定分隔字段的字符
sort -t: +1 vegetables 此命令序列排序 vegetables 文件,對每一行上之一個冒號后的文本進(jìn)行比較。+1 告訴 sort 命令忽略之一字段,從第二字段的開始到該行的結(jié)束進(jìn)行比較。-t: 標(biāo)志告訴 sort 命令冒號分隔字段。如果 vegetables 包含: yams:104 turnips:8 potatoes:15 carrots:104 green beans:32 radishes:5 lettuce:15 那么,將 LC_ALL、LC_COLLATE 或 LANG 環(huán)境變量設(shè)置為 C 的情況下,sort 命令將顯示: carrots:104 yams:104 lettuce:15 potatoes:15 green beans:32 radishes:5 turnips:8 注意數(shù)字沒有按照數(shù)字排序。當(dāng)用字典式分類從左至右比較每一個字符時出現(xiàn)這種情況。換句話說,3 在 5 之前,所以 32 在 5 之前。
7. 排序數(shù)字
sort -t: +1 -n vegetables 此命令序列按照第二個字段對 vegetables 文件進(jìn)行數(shù)字排序。如果 vegetables 文件與示例 6 中的相同,那么 sort 命令將顯示: radishes:5 turnips:8 lettuce:15 potatoes:15 green beans:32 carrots:104 yams:. 要對多個字段排序,請輸入: sort -t: +1 -2 -n +0 -1 -r vegetables 或 sort -t: -k2,2 n -k1,1 r vegetables 此命令序列對第二字段(+1 -2 -n)進(jìn)行數(shù)字排序。在這個順序中,它以逆字母順序(+0 -1 -r)對之一字段排序。將 LC_ALL、LC_COLLATE 或 LANG 環(huán)境變量設(shè)置為 C 的情況下,輸出將類似于: radishes:5 turnips:8 potatoes:15 lettuce:15 green beans:32 yams:104 carrots:104 此命令按數(shù)字順序?qū)π信判?。?dāng)兩行數(shù)字相同時,它們以逆字母順序出現(xiàn)。
9. 使用排序的文本替換原始文件
sort -o vegetables vegetables 此命令序列將排序輸出存入 vegetables 文件( -o vegetables)。 文件 /usr/bin/sort 包含 sort 命令。 /var/tmp sort 命令處理期間的臨時空間。 /usr/tmp 如果不能在 /var/tmp 中創(chuàng)建文件,是 sort 命令處理期間的臨時空間。 /tmp 如果不能在 /var/tmp 或 /usr/tmp 中創(chuàng)建文件,是 sort 命令處理期間的臨時空間。
也不太懂。
s是替換,p是打印,就是告汪盯在 ip_conntrack文件里符合正則始(即前兩個百分號之間的)用后兩百分號替換。
那陵碧串正則表達(dá)襪和式不太明白。
其中的 “%” 可以用 “/”替換,這是分隔符。 大體的意思是 對于域名為
“192.168….”的ip字符串用 “\1″ 替換,并且寫入文件 “/proc/兄正net/ip_conntract” 中,并對這些字符串排序。對于不符合正則
“* src=\(192.168.*\).*\)”的域名不予處理 (-n 選項的意李塵空思哪瞎)。關(guān)于linux sort 重復(fù)值的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營銷公司。廣泛應(yīng)用于計算機網(wǎng)絡(luò)、設(shè)計、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
本文標(biāo)題:如何使用linuxsort去除重復(fù)值?(linuxsort重復(fù)值)
本文來源:http://fisionsoft.com.cn/article/cdpjioi.html


咨詢
建站咨詢
