awk用于1到n列的简单制表符分隔
我有一个制表符分隔的文件,我想打印的第一列 我更愿意保持我的方法尽可能简单和可复制:awk用于1到n列的简单制表符分隔,awk,cat,Awk,Cat,我有一个制表符分隔的文件,我想打印的第一列 我更愿意保持我的方法尽可能简单和可复制: awk -F" " '{print $1,"\t" ,$2, "\t", $3}' old.bed > new.bed 但是,当我尝试对新文件进行进一步分析时,我得到一个错误,即该文件的格式出乎意料 我通过以下方式检查文件的内容: cat -A new.bed | more chr1 3000870 3000918$ chr1 3000870 3000918$ chr1
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$
看起来很正常
出了什么问题?我如何避免它?文件中没有$。是cat的-A标志将它们添加到显示屏中。man cat的相关部件:
只要放下-A标志,美元就不会再显示了
此外,我不确定awk命令是否100%实现了您的预期。
输出实际上不是col1 tab col2 tab col3,
但是col1空间选项卡空间col2空间选项卡空间col3。
这是因为print命令中的每一个都被替换为字段分隔符,除此之外,您还添加了选项卡。
下面是一种使“列”选项卡分离的简单方法:
awk -v OFS='\t' '{print $1, $2, $3}'
由于您的输入是以制表符分隔的,因此可以使用cut作为简单且可复制的方法:
cut -f 1-3 old.bed
至于你的美元问题,janos已经完全回答了
cut -f 1-3 old.bed