Linux 如何获取comm输出的第一列?
因此,我尝试使用Linux 如何获取comm输出的第一列?,linux,shell,command-line,comm,Linux,Shell,Command Line,Comm,因此,我尝试使用awk获取comm输出的第一列。 我读到选项卡被用作comm的分隔符,所以我做了: awk -F"\t" '{print $1}' comm-result.txt comm-result.txt包含以下输出: comm -3 file1 file2 但这似乎不起作用 这也将空格字符作为分隔符,当我的文件包含多个空格时,我会得到奇怪的结果 如何仅从comm获取第一列?可能是比awk更好的选择 “因此,我正在尝试获取comm输出的第一列” “comm file1 file2”输出
awk
获取comm输出的第一列。
我读到选项卡被用作comm的分隔符,所以我做了:
awk -F"\t" '{print $1}' comm-result.txt
comm-result.txt包含以下输出:
comm -3 file1 file2
但这似乎不起作用
这也将空格字符作为分隔符,当我的文件包含多个空格时,我会得到奇怪的结果
如何仅从comm
获取第一列?可能是比awk
更好的选择
“因此,我正在尝试获取comm输出的第一列”
“comm file1 file2
”输出的第一列包含file1
所特有的行。只需使用-2
(抑制文件2
特有的行)和-3
(抑制两个文件中出现的行),即可跳过后期处理
但是,如果您别无选择,只能处理
comm
的预运行输出,那么,cut
将是一个选项:
cut -f1 comm-results.txt
但是,对于列1为空的情况,这会导致空行。为了解决这个问题,也许awk
更合适:
awk -F"\t" '{if ($1) print $1}' comm-results.txt
---- ----------------
| |
Use tab as delimiter |
+-- only print if not empty
您可以将
comm
与-2
和-3
(as)一起使用,也可以将comm
与grep
一起使用,如:
grep -o '^\S\+' <(comm file1 file2)
grep-o'^\S\+'非常感谢,我不知道-1和-2选项,我想我必须处理结果。不客气。我也没有意识到这一点,直到我查看了手册页。只需稍加调整,就可以在ps输出上非常好地工作ps-A | grep node | grep-o'^\s*\s\+'
你能提供一个例子吗?@JasonThompson,在接受的答案中已经有一个例子了。如果你在找别的东西,也许你应该问一个新问题?啊。。。我现在看到了。我在浏览答案时没有看到。请提供一个例子
grep -o '^\S\+' <(comm file1 file2)