在 AIX 上将行转换为列时 AWK 不打印列

AWK not print columns when converting row to columns on AIX

我正在为以下文件在 AIX 上将行转换为列

cat test.txt
SUV
BMW X5
CADILLAC ESCALDE
Honda CRV
Toyota RAV

Sedan
Lexus is250
Acura
Suburu

将行转换为列

cat test.txt |awk -v RS="" '{=}1'
SUV
BMW X5
CADILLAC ESCALDE
Honda CRV
Toyota RAV
Sedan
Lexus is250
Acura
Suburu

但是

cat test.txt | awk -v RS="" '{print , , , , }'
SUV BMW X5 CADILLAC ESCALDE 
Sedan Lexus is250 Acura 

那么,如何在不指定的情况下打印如下所有列

SUV BMW X5 CADILLAC ESCALDE Honda CRV Toyota RAV
Sedan Lexus is250 Acura Suburu

谢谢

我无法在 AIX 上验证这一点,但请尝试一下

 awk -F'\n' -v RS= '{for(i=1;i<=NF;i++) printf "%s",$i OFS; print ""}' 

在您的脚本中使用了默认字段分隔符,这就是为什么您看不到来自 ..

的完整记录的原因

如果你知道你有 5 个字段

awk -F'\n' -v RS= '{print ,,,,}'

应该也可以。

另一种方式:

awk -F'\n' -v RS='' '{=};1' test.txt

= 语法强制 awk 重新计算 [=12=],这会将字段分隔符从 '\n' 转换为 ' '(默认 OFS)。