将分离器保持在awk输出中

将分离器保持在awk输出中,awk,syntax,separator,Awk,Syntax,Separator,我希望在bash中使用“awk”将分隔符保留在子集输出中的同时,将文件子集化 这就是我正在使用的: 输入文件以R语言创建,具有: 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.

我希望在bash中使用“awk”将分隔符保留在子集输出中的同时,将文件子集化

这就是我正在使用的:

输入文件以R语言创建,具有:

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")
结果是:

AX-11125

AX-22456

AX-333445

请注意,我的列合并在
awk
输出中(我希望它作为输入文件以制表符分隔)。可能这是一个简单的语法问题,但如果有任何想法,我将不胜感激。

使用

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

awk中的变量在没有运算符的情况下一个接一个地写入,在这方面,awk中的变量是串联的-
$1$2$3
$1$2$3
没有什么不同

第一种解决方案将输出字段分隔符
OFS
设置为选项卡,然后使用逗号运算符打印分隔字段。第二种解决方案只是直接将选项卡洒在其中,所有内容都像以前一样连接起来。

使用

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

awk中的变量在没有运算符的情况下一个接一个地写入,在这方面,awk中的变量是串联的-
$1$2$3
$1$2$3
没有什么不同


第一种解决方案将输出字段分隔符
OFS
设置为选项卡,然后使用逗号运算符打印分隔字段。第二种解决方案只是直接将标签插入其中,所有内容都像以前一样连接起来。

作为旁白:虽然
{'print$1$2$3'}
在语法上碰巧起作用,但最好将整个Awk脚本放在单引号中:
{print$1$2$3}
作为旁白:而
{'print$1$2$3'}
从语法上说,如果能正常工作,最好将整个Awk脚本放在单引号中:
“{print$1$2$3}”
awk '{ print $1 "\t" $2 "\t" $3 }'