bash - 获取通信输出的第一列

  显示原文与译文双语对照的内容
0 0

所以我正在尝试使用awk获得第一列的通信输出。 我读到那个标签被用作通讯的分隔符,所以我做了:


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

包含以下输出的comm-result.txt:


comm -3 file1 file2

但这似乎不起作用。 这个建议也将空格字符作为分隔符,当我的文件包含多个空格时,我得到奇怪的结果。 我如何才能从通讯中获得第一列? 谢谢。

时间: 原作者:

0 0

"我想得到输出的第一列"

" comm file1 file2"输出的第一列包含 file1 特有的行。 你可以通过使用 -2 ( 取消 file2的唯一行) 和 -3 ( 取消显示在两个文件中的行) 调用 comm 来跳过 post-processing 。


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


然而,如果你别无选择,只能处理一个pre-run输出 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

原作者:
0 0

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

原作者:
...