在类似Unix的操作系统上,comm comand逐行比较两个排序的文件。
查看英文版
1 comm 运行系统环境
2 comm 描述
3 comm 语法
4 comm 例子
Unix&Linux
查看英文版
comm [OPTION]... FILE1 FILE2
选件
-1 |
取消第1列(FILE1独有的行) |
-2 |
禁止显示第2列(FILE2独有的行) |
-3 |
取消显示第3列(两个文件中均显示行) |
--check-order |
即使所有输入行都是可配对的,也要检查输入是否正确排序 |
--nocheck-order |
不要检查输入是否正确排序 |
--output-delimiter = STR |
字符串 STR的单独列 |
--help |
显示帮助消息,然后退出。 |
--version |
输出版本信息,然后退出。 |
查看英文版
假设您有两个文本文件,recipe.txt和shopping-list.txt。
recipe.txt包含以下几行:
All-Purpose Flour Baking Soda Bread Brown Sugar Chocolate Chips Eggs Milk Salt Vanilla Extract White Sugar
而shopping-list.txt,LIST.TXT包含这些行:
All-Purpose Flour Bread Brown Sugar Chicken Salad Chocolate Chips Eggs Milk Onions Pickles Potato Chips Soda Pop Tomatoes White Sugar
如您所见,这两个文件是不同的,但是许多行是相同的。并非所有配方成分都在购物清单中,并且并非购物清单中的所有内容都是配方的一部分。
如果我们在两个文件上运行comm命令,它将读取两个文件并为我们提供三列输出:
comm recipe.txt shopping-list.txt
All-Purpose Flour Baking Soda Bread Brown Sugar Chicken Salad Chocolate Chips Eggs Milk Onions Pickles Potato Chips Salt Soda Pop Tomatoes Vanilla Extract White Sugar
在这里,输出的每一行在开头都有零,一或两个制表符,将输出分为三列:
(列在视觉上重叠,因为在这种情况下,我们的终端将标签页打印为八个空格。在屏幕上看起来可能有所不同。)
接下来,让我们看看如何将分离的数据导入电子表格。
为电子表格创建CSV文件
一种使用comm的有用方法是输出到CSV文件,然后可以通过电子表格程序读取该文件。CSV文件只是使用特定字符(通常是逗号,制表符或分号)的文本文件,以可以作为电子表格读取的方式来分隔数据。按照惯例,CSV文件名的扩展名为 .csv。
例如,我们运行相同的命令,但是这次我们使用>运算符将输出重定向到名为output.csv的文件:
comm recipe.txt shopping-list.txt > output.csv
这次屏幕上没有输出。而是将输出发送到名为output.csv的文件。要检查它是否工作正常,我们可以猫的内容output.csv:
cat output.csv
All-Purpose Flour Baking Soda Bread Brown Sugar Chicken Salad Chocolate Chips Eggs Milk Onions Pickles Potato Chips Salt Soda Pop Tomatoes Vanilla Extract White Sugar
要将这些数据导入电子表格,我们可以在LibreOffice Calc中将其打开:
在打开文件之前,LibreOffice会问我们如何解释文件数据。
我们希望列定界符为制表符,默认情况下已选中。(我们的数据中没有逗号或分号,因此我们不必担心其他复选框。)根据给定的选项,它还为我们提供了数据外观的预览。
一切看起来不错,因此我们可以单击“确定”,LibreOffice会将数据导入电子表格。
现在,如果需要,我们可以将电子表格保存为其他格式,例如Microsoft Excel文件,XML文件或HTML。
抑制列
如果只想输出特定的列,则可以在命令中指定要取消显示的列号,并在前面加一个破折号。例如,此命令将取消显示第1列和第2列,仅显示第3列(两个文件共享的行)。这将隔离购物清单中也是食谱一部分的项目:
comm -12 recipe.txt shopping-list.txt
All-Purpose Flour Bread Brown Sugar Chocolate Chips Eggs Milk White Sugar
下一条命令将取消显示第2列和第3列,仅显示第1列-配方中不在购物清单中的行。这向我们展示了橱柜中已经拥有的成分:
comm -23 recipe.txt shopping-list.txt
Baking Soda Salt Vanilla Extract
接下来的命令将取消显示第3列,仅显示第1列和第2列-食谱中不在购物清单中的项目和购物清单中不在食谱中的项目,它们分别在各自的列中。
comm -3 recipe.txt shopping-list.txt
Baking Soda Chicken Salad Onions Pickles Potato Chips Salt Soda Pop Tomatoes Vanilla Extract
查看英文版
cut | cu | csplit | crontab | cpio | continue | compress | col | cmp | cksum | chsh | chroot | chkey | cd | chmod | cp | chown | cal | calendar | clear | chfn | cancel | cat | cc | cfdisk | checkeq | checknr | chgrp |
未知的网友