在 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)。
我正在为以下文件在 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)。