兩個文件比較之comm命令

comm命令可用于兩個文件之間的比較。它有很多不錯的選項可用來調整輸出,以便我們執
行交集、求差(difference)以及差集操作。
? 交集:打印出兩個文件所共有的行。
? 求差:打印出指定文件所包含的且互不相同的那些行。
? 差集:打印出包含在文件a中,但不包含在其他指定文件中的那些行。

假設現在有兩個文件a和b,內容分別是:a(1,2,3),b(3,4,5)。那么,對這兩個文件進行操作的結果如下。
交集:3。
求差:1,2,4,5。
差集(a):1,2。

需要注意的是comm必須使用排過序的文件作為輸入。請看看下面的例子:

[root@host1 shell]# echo -e "1\n3\n8\n2" > a.txt
[root@host1 shell]# cat a.txt 
1
3
8
2
[root@host1 shell]# echo -e "1\n5\n7\n2" > b.txt
[root@host1 shell]# cat b.txt 
1
5
7
2
[root@host1 shell]# sort a.txt  -o a.txt ; sort b.txt -o b.txt

(1) 首先執行不帶任何選項的comm:

[root@host1 shell]# comm a.txt b.txt 12
357
8

輸出的第一列包含只在a.txt中出現的行(a的差集),第二列包含只在b.txt中出現的行(b的差集),第三列
包含a.txt和b.txt中相同的行(交集)。各列以制表符(\t)作為定界符。

(2) 為了打印兩個文件的交集,我們需要刪除第一列和第二列,只打印出第三列:

[root@host1 shell]# comm -1 -2 a.txt b.txt 
1
2

(3) 打印出兩個文件中不相同的行:

[root@host1 shell]# comm -3 a.txt b.txt 
357
8

在這次的輸出中,那些唯一出現的行使得列中出現了空白字段。所以這兩列在同一
行上不會同時都出現內容。為了提高輸出結果的可用性,需要刪除空白字段,將兩
列合并成一列:

3
5
7
8

(4) 要生成規范的輸出,得使用下面的命令:

[root@host1 shell]# comm -3 a.txt b.txt | sed 's/^\t//'
3
5
7
8

(5) 通過刪除不需要的列,我們就可以分別得到a.txt和b.txt的差集。
a.txt的差集
$ comm a.txt b.txt -2 -3
-2 -3 刪除第二列和第三列。
b.txt的差集
$ comm a.txt b.txt -1 -3
-1 -3 刪除第一列和第三列。

工作原理:

comm的命令行選項可以按照需求對輸出進行格式化,例如:
? -1 從輸出中刪除第一列;
? -2 從輸出中刪除第二列;
? -3 從輸出中刪除第三列。
  在生成統一輸出時,sed命令通過管道獲取comm的輸出。它刪除行首的 \t字符。sed中的s
表示替換(substitute)。/^\t/ 匹配行前的 \t(^是行首標記)。//(兩個/操作符之間沒有任何
字符)是用來替換行首的\t的字符串。如此一來,就刪除了所有行首的\t。
  差集操作允許你比較兩個文件,打印出只在a.txt或b.txt中出現的行。當a.txt和b.txt作為comm
命令的參數時,輸出中的第一列是a.txt相對于b.txt的差集,第二列是b.txt相對于a.txt的差集。

轉載于:https://www.cnblogs.com/01-single/p/6950645.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456292.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456292.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456292.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【轉】error while loading shared libraries: xxx.so.x 錯誤的原因和解決辦法

原博客地址:http://www.cnblogs.com/Anker/p/3209876.html#undefined error while loading shared libraries: xxx.so.x" 錯誤的原因和解決辦法 今天在執行一個protobuf程序時,提示error while loading shared libraries: libprotobuf.so.8: cannot…

Flask學習記錄之Flask-SQLAlchemy

Flask-SQLAlchemy庫讓flask更方便的使用SQLALchemy,是一個強大的關系形數據庫框架,既可以使用orm方式操作數據庫,也可以使用原始的SQL命令. Flask-Migrate 是一個數據遷移框架,需要通過Flask-script庫來操作. 一.配置Flask-SQLAlchemy 程序使用的數據庫地址需要配置在SQLALCH…

Postico —— OS X 上的免費 PostgreSQL 客戶端

Postico 是 OS X 下的一個 PostgreSQL 客戶端管理工具。要求 OS X 10.8 或者更新版本。 文章轉載自 開源中國社區 [http://www.oschina.net]

hdu 1760 A New Tetris Game(搜索博弈)

題目鏈接&#xff1a;hdu 1760 A New Tetris Game 題意&#xff1a; 給你一個矩陣&#xff0c;0表示可以放格子&#xff0c;現在給你2*2的格子&#xff0c;lele先放&#xff0c;問是否能贏。 題解&#xff1a; 爆搜。具體看代碼 1 #include<bits/stdc.h>2 #define F(i,a,…

flask-restful接口

同flask一樣&#xff0c;flask-restful同樣支持返回任一迭代器&#xff0c;它將會被轉換成一個包含原始 Flask 響應對象的響應&#xff1a; class ArticleApi(Resource):def get(self):return {"hello":"world"},201&#xff0c;{"course":&quo…

如約而至 Nexus 6 的 Android 7.1.1 已經上線

經過近一個月的等待&#xff0c;Google 已正式為 Nexus 6 推送 Android 7.1.1 更新&#xff0c;本次更新版本號為 N6F26Q&#xff0c;可以點擊這里下載完整系統鏡像或者下載 OTA 升級包。 相比其他 Nexus 和 Pixel 設備&#xff0c;Nexus 6 已經發布了超過兩年之久&#xff0c;…

關于jedis2.4以上版本的連接池配置,及工具類

jedis.propertise 注意以前版本的maxAcitve和maxWait有所改變&#xff0c;JVM根據系統環境變量ServerType中的值 取不同的配置&#xff0c;實現多環境&#xff08;測試環境、生產環境&#xff09;集成。 redis.pool.maxTotalredis.pool.maxActive.${ServerType} redis.pool.max…

關于response格式轉換

調用圖靈機器人api實例&#xff1a; class RobotHandler(WebSocketHandler):def open(self):# print("WebSocket opened",self.request.remote_ip)robot_set.add(self)# 獲取websocket的發過來的信息def on_message(self, message):urlhttp://openapi.tuling123.com/…

微軟老兵 Antoine LeBlond 將正式離職

Antoine LeBlond (安東勒布朗)是微軟眾高管之一,他在微軟工作將近25年之久,然而他將在下周一,也就是他在微軟的第9000天正式離職. 在發給微軟眾同事的郵件中,勒布朗表示他希望"探索微軟之外的世界". 勒布朗在微軟Office部門度過了他在微軟的前20年時光,并與前微軟高管…

轉載——java synchronized詳解

文章來源&#xff1a;http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html轉載于:https://www.cnblogs.com/insist8089/p/6515885.html

Django中的F對象和Q對象

F對象 可以獲取到自己的屬性值實現自己的屬性自己的屬性關聯的復雜條件支持運算 Q對象 Q對象實際上是對條件的一個封裝封裝后支持邏輯運算與或非 &|~ 支持嵌套 例子 from django.db.models import Max, Avg, F, Q from django.http import HttpResponse from django.s…

總鏈接

字符集修改、Linux時間同步、調整文件描述符http://11815879.blog.51cto.com/11805879/1915276正則表達式&#xff1a;http://11815879.blog.51cto.com/11805879/1919777 文件系統inode與blockhttp://11815879.blog.51cto.com/11805879/1917068 文件類型與軟硬鏈接&#xff1a;…

Django模型關系

模型關系 1:1 一對一 &#xff08;一個身份證對應一個駕照&#xff09; 是使用外鍵唯一約束實現的對應最多只能有一個我們通常會在從表中聲明關系 主表&#xff0c;從表 主表數據刪除&#xff0c;從表數據級聯刪除從表數據刪除&#xff0c;主表不受影響誰聲明關系&#xff0c…

Android常用開源項目

Android常用開源項目 Android 2014-05-23 16:39:43 發布您的評價: 4.3 收藏 24收藏Android開源項目第一篇——個性化控件(View)篇包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、其他Android開源項目第二篇——工具庫…

Django中數據知識點歸納

Django對象的增刪改查 我們為了對django對象的增刪改查進行總結&#xff0c;先在model.py文件中創建類便于舉例 定義學生&#xff1a; class Students(models.Model):snamemodels.CharField(max_length20)sgendermodels.BooleanField(defaultTrue)sagemodels.IntegerField()…

面 試 細 節 一 點 通

面談的禮節是社會新人及求職者踏人社會工作前最重要且最需學習的課題&#xff0c;因為這關系到是否能順利踏入社會且尋找到一份合適滿意的工作。 一個社會新人除了應注意的面試禮節外&#xff0c;在開始進行面談之前及面談結束之后&#xff0c;還有不少必須注意的禮儀。 面談時…

寬帶與流量的關系

流量&#xff0c;一般指的是每秒鐘流經某設備的數據的多少。也就是Byte/Second( 字節每秒)。 比方說1M&#xff0c;這個概念的單位叫bPS(bit Per Second)比特每秒。而事實上經常用另外一個詞來代替描述&#xff0c;也就是帶寬。 而帶寬和流量的換算關系是&#xff1a; 1 By…

PHP函數處理方法總結

call_user_func_array (PHP 4 > 4.0.4, PHP 5, PHP 7) call_user_func_array — 調用回調函數&#xff0c;并把一個數組參數作為回調函數的參數 說明 mixed call_user_func_array ( callable $callback , array $param_arr ) 把第一個參數作為回調函數&#xff08;callback&…

Django刪除多對多表關系 :

刪除多對多表關系 &#xff1a; # 刪除子表與母表關聯關系,讓小虎不喜歡任何顏色 # 寫法1: child_obj Child.objects.get(name"apollo") colors_obj Colors.objects.all() child_obj.favor child_obj.save() # 寫法2: child_obj Child.objects.get(name"apo…

git push/pull時總需要輸入用戶名密碼的解決方案

在提交項目代碼或者拉代碼的時候&#xff0c;git會讓你輸入用戶名密碼&#xff0c;解決方案&#xff1a;&#xff08;我們公司用的是gitlab&#xff09;執行git config --global credential.helper store命令然后git push origin your-branch會讓你輸入用戶名和密碼&#xff0c…