我有一个制表符分隔的文件,我想要打印。的第一列。
我希望尽可能保持简单和可重复的方式:
awk -F" " '{print $1,"\t" ,$2, "\t", $3}' old.bed > new.bed
但是当我尝试对新文件进行进一步分析时,我收到一条错误消息,指出该文件的格式是意外的......
我用以下方法检查文件的内容:
cat -A new.bed | more
chr1 3000870 3000918$
chr1 3000870 3000918$
chr1 3000872 3000920$
chr1 3000872 3000920$
chr1 3000872 3000920$
看起来很正常......
出了什么问题,我该如何避免呢?
答案 0 :(得分:4)
$
不在文件中。它是-A
的{{1}}标志,将其添加到显示中。来自cat
的相关部分:
man cat
只需删除 -A, --show-all
equivalent to -vET
-E, --show-ends
display $ at end of each line
标记,-A
将不再显示。
此外,我不确定$
命令是否完全符合您的预期。
输出实际上不是awk
,
但是col1 tab col2 tab col3
。
这是因为col1 space tab space col2 space tab space col3
命令中的每个,
都被字段分隔符替换,除此之外,您还要添加制表符。
这是一种将列标签分开的简单方法:
print
答案 1 :(得分:1)
由于您的输入是制表符分隔的,因此您可以使用cut
作为一种简单且可重现的方法:
cut -f 1-3 old.bed
至于您的$
问题,janos已完全涵盖{{3}}。