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

时间:2016-02-03 19:38:23

标签: awk 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=$1}1'
SUV
BMW X5
CADILLAC ESCALDE
Honda CRV
Toyota RAV
Sedan
Lexus is250
Acura
Suburu

但是

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

 awk -F'\n' -v RS= '{for(i=1;i<=NF;i++) printf "%s",$i OFS; print ""}' 
在您的脚本中使用

默认字段分隔符,这就是您没有看到$1..$5

的完整记录的原因

如果你知道你有5个字段

awk -F'\n' -v RS= '{print $1,$2,$3,$4,$5}'

也应该有用。

答案 1 :(得分:1)

备用单行:

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

$1=$1语法强制awk重新计算$0,它将字段分隔符从'\ n'转换为''(默认OFS)。