为什么不检测我的标签?

时间:2017-05-17 02:20:35

标签: awk

我在2行上创建了一个带有制表符分隔数字的文件。

mac$ cat tab_sep_file.tsv 
1   2   3
4   5   6

我听说你是真正的标签或空格吗?是的,它们是真正的标签:

mac$ python
Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> with open('tab_sep_file.tsv') as f:
...     a = f.read()
... 
>>> print repr(a)
'1\t2\t3\n4\t5\t6\n\n'
>>> 

让我们打印出一列

mac$ cat tab_sep_file.tsv | awk -F "\t" "{print $1}"
1   2   3
4   5   6

为什么这不起作用? 我在几个TSV上测试了它

2 个答案:

答案 0 :(得分:1)

在Awk表达式中使用单引号,如下所示:'{print $1}'。双引号$1扩展为null。

此外,默认情况下,当空格(空格和制表符)是字段分隔符时,无需使用-F选项。

答案 1 :(得分:1)

将您的print语句放在单引号中。

echo $'a\tb' | awk -F "\t" '{print $1}'

您在技术上也不需要此处的标签分隔符。 awk会自动处理它。

echo $'a\tb' | awk '{print $2}'