如何获得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 mentioned,cut
将是一个选项:
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),或者使用comm
和grep
一样:
grep -o '^S+' <(comm file1 file2)
所以输出不包含任何尾随空格。这对非comm
命令很有用。
以上是关于如何获得comm输出的第一列?的主要内容,如果未能解决你的问题,请参考以下文章