久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

花式挑出兩個(gè)文檔中相同的行

在我們的工作或?qū)W習(xí)您可能會(huì)碰到這樣的情況,需要去比較兩個(gè)文本文件,挑出兩個(gè)文件中相同的或者不相同的行,可能大家在碰到這樣的需求時(shí),可能會(huì)想著用兩層循環(huán)去遍歷這兩個(gè)文件,然后做比較。用這種思路去解決問(wèn)題,不管用shell還是Python一定是可行的。筆者在這里介紹幾種高效、簡(jiǎn)單的方式。

筆者用a.txt和b.txt這兩個(gè)文件來(lái)加以說(shuō)明如果找出兩個(gè)文件中相同的行。

花式挑出兩個(gè)文檔中相同的行

花式挑出兩個(gè)文檔中相同的行

從這兩個(gè)文檔里可以看出它們有兩同的部分也有不相同的部分。

1.思路:使用cat將兩個(gè)文檔連接起來(lái),然后用sort進(jìn)行計(jì)數(shù),再用awk將計(jì)數(shù)為2的過(guò)濾出來(lái)

2.使用comm(有的系統(tǒng)上的名字叫common),comm可以找出兩個(gè)文件中各自獨(dú)有和共同擁有的行,不過(guò)comm比較兩個(gè)文件之前需要對(duì)兩個(gè)文件進(jìn)行排序。

以下是排序后的結(jié)果

將兩個(gè)文件進(jìn)行comm比較后,可以看到第一列只顯示了c.txt獨(dú)自擁有的行,第二列顯示d.txt擁有的行。第三列顯示是的兩個(gè)文件共有的行。

通過(guò)使用-1 -2的參數(shù)可以去掉第一列和第二列。

3.使用純粹的awk來(lái)完成

解釋一下這行命令的意思,NR和FNR的意思相近,NR,表示awk開(kāi)始執(zhí)行程序后所讀取的數(shù)據(jù)行數(shù)。FNR,與NR功用類(lèi)似,不同的是awk每打開(kāi)一個(gè)新文件,FNR便從0重新累計(jì)。所以NR==FNR表示如果是第一個(gè)文件,即c.txt,NR>FNR表示如果是第二個(gè)文件即d.txt。a[$0]就是以每行內(nèi)容為index的一個(gè)hash表;由于執(zhí)行了++,它的初值變成了0。如果你打印了a[$0],你會(huì)發(fā)現(xiàn)它其實(shí)就是行數(shù)的重復(fù)次數(shù),后面的NR>FNR&&a[$0],在d.txt文件中并且匹配到與c.txt文件相同的行打印該行(行為語(yǔ)句為空,表示打印該行)。

小結(jié):使用第一種和第二種方法來(lái)處理文本比較高效,使用純粹的awk看起來(lái)比較復(fù)雜,但awk處理起來(lái)文本更加靈活多變,理解awk在此處的用法對(duì)awk的學(xué)習(xí)是有幫助的。

 

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專(zhuān)業(yè)人才培訓(xùn)機(jī)構(gòu)!

    1. 主站蜘蛛池模板: 宽城| 湘潭县| 九龙坡区| 资兴市| 进贤县| 中方县| 出国| 龙口市| 潼南县| 邛崃市| 九龙城区| 泗洪县| 崇礼县| 松阳县| 赣州市| 河南省| 盘锦市| 玛沁县| 佛山市| 北辰区| 太康县| 宁强县| 通河县| 廉江市| 镇沅| 东港市| 二连浩特市| 鸡东县| 宁海县| 县级市| 满城县| 崇义县| 宁明县| 唐山市| 泸州市| 锦州市| 南雄市| 大埔区| 牡丹江市| 即墨市| 弥勒县|