嗨,我有一个简单的组合两个文件的awk。

awk -v OFS='\t' '
FNR == NR { a[$1] = $2 OFS $10 OFS $11 OFS $13; next }
{ $1 = $1 }
FNR !=  1 { print $0, a[$1] }
' $2 $1 > $3

$1文件中有一列包含字符“not perfect”
合并两个文件后,此字符将变为制表符分隔符。
比如“不完美”
有人知道为什么会这样吗?

最佳答案

您已将输出分隔符OFS设置为'\t',以便在任何地方打印两个用逗号分隔的内容,例如:

print $0, a[$1]

你会得到:
<contents of $0 i.e. the whole input line>\t<the '$1'th value of 'a'>

因此,要么将OFS设置为一个空格,要么使用以下命令:
OFS=' '

或者直接使用printf来避免隐式使用OFS比如:
printf("%s %s\n", $0, a[$1])

关于linux - 通过awk空间合并两个文件后成为制表符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29957084/

10-13 03:20