Maintaining the separator in awk output

不羁的心 提交于 2019-12-12 02:54:10

问题


I would like to subset a file while I keep the separator in the subsetted output using ´awk´ in bash.

That´s what I am using:

The input file is created in R language with:

inp <- 'AX-1   1    125  AA  0.2  1 AB -0.89 0 AA 0.005 0.56
        AX-2   2    456  AA  0   0 AA -0.56 0.56 AB -0.003 0
        AX-3   3    3445  BB  1.2  1 NA  0.002 0 AA 0.005 0.55'
inp <- read.table(text=inp, header=F)
write.table(inp, "inp.txt", col.names=F, row.names=F, quote=F, sep="\t")

(So fields are separated by tabs)

The code in bash:

awk {'print $1 $2 $3'} inp.txt

The result:

AX-11125

AX-22456

AX-333445

Please note that my columns were merged in the awkoutput (and I would like it to be tab delimited as the input file). Probably it is a simple syntax problem, but I would be grateful to any ideas.


回答1:


Use

awk -v OFS='\t' '{ print $1, $2, $3 }'

or

awk '{ print $1 "\t" $2 "\t" $3 }'

Written one after another without an operator between them, variables in awk are concatenated - $1 $2 $3 is no different from $1$2$3 in this respect.

The first solution sets the output field separator OFS to a tab, then uses the comma operator to print separated fields. The second solution simply sprinkles tabs in there directly, and everything is concatenated as it was before.



来源:https://stackoverflow.com/questions/35178586/maintaining-the-separator-in-awk-output

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!