如何获得comm输出的第一列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得comm输出的第一列?相关的知识,希望对你有一定的参考价值。

所以我试图使用awk获得第一列通信输出。我读到Tab被用作comm的分隔符,所以我做了:

awk -F"	" '{print $1}' comm-result.txt

使用comm-result.txt包含输出:

comm -3 file1 file2

但这似乎不起作用。

这个推荐还将空格字符作为分隔符,当我的文件包含多个空格时,我得到了奇怪的结果。

我怎么才能从comm获得第一列?

答案

“所以我试图获得第一列通信输出”

comm file1 file2”输出的第一列包含file1独有的行。您可以通过简单地使用comm(抑制-2独有的行)和file2(抑制两个文件中出现的行)调用-3来跳过后处理。

comm -2 -3 file1 file2   # will show only lines unique to file1

但是,如果您别无选择,只能处理comm的预运行输出,那么作为Carl mentionedcut将是一个选项:

cut -f1 comm-results.txt

但是,对于第1列为空的情况,这会导致空行。要解决这个问题,也许awk可能更适合:

awk -F"	" '{if ($1) print $1}' comm-results.txt
     ----    ----------------
      |                     |
   Use tab as delimiter     |
                            +-- only print if not empty
另一答案

对于这个问题,cut(1)可能是比awk更好的选择。

另一答案

你可以使用comm-2-3(作为already explained above),或者使用commgrep一样:

grep -o '^S+' <(comm file1 file2)

所以输出不包含任何尾随空格。这对非comm命令很有用。

以上是关于如何获得comm输出的第一列?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 CSV 文件中获取每一行的第一列?

如何根据列比较 unix 中的两个文件

如何将两个熊猫列混合到一个数据框中,第一列的第一个元素,第二列的第二个元素等等? [复制]

Access 仅导出查询的第一列

oracle查询怎么多个表的第一列

如何提取 DataTables 中所选行的第一列?