我在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上测试了它
答案 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}'