所以我试图使用awk
获取第一列通信输出。
我读到Tab被用作comm的分隔符所以我做了:
awk -F"\t" '{print $1}' comm-result.txt
使用包含输出的comm-result.txt:
comm -3 file1 file2
但这似乎不起作用。
这个推荐还将空格字符作为分隔符,当我的文件包含多个空格时,我得到奇怪的结果。
我怎样才能从comm
获得第一列?
答案 0 :(得分:32)
“所以我试图获得第一列通信输出”
“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"\t" '{if ($1) print $1}' comm-results.txt
---- ----------------
| |
Use tab as delimiter |
+-- only print if not empty
答案 1 :(得分:7)
cut(1)
可能是比awk
更好的选择。
答案 2 :(得分:3)
您可以将>>> import pandas as pd
>>> s = pd.Series([1, 2, 3, 4])
>>> s
0 1
1 2
2 3
3 4
dtype: int64
>>> s.quantile(0.5)
2.5
>>> s.quantile([0.25, 0.5, 0.75])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/pandas/core/series.py", line 1324, in quantile
result = _quantile(valid_values, q * 100)
File "/usr/lib/python2.7/dist-packages/pandas/compat/scipy.py", line 66, in scoreatpercentile
idx = per / 100. * (values.shape[0] - 1)
TypeError: unsupported operand type(s) for /: 'list' and 'float'
与comm
和-2
一起使用(作为already explained above),或将-3
与comm
一起使用,如:
grep
因此输出不会包含任何尾随空格。这对非grep -o '^\S\+' <(comm file1 file2)
命令很有用。