gpt4 book ai didi

awk - 为什么 awk 字段分配会丢失输出字段分隔符?

转载 作者:行者123 更新时间:2023-12-04 13:50:27 26 4
gpt4 key购买 nike

此命令有效。它输出字段分隔符(在本例中为逗号):

$ echo "hi,ho"|awk -F, '/hi/{print $0}'
hi,ho

此命令有奇怪的输出(缺少逗号):
$ echo "hi,ho"|awk -F, '/hi/{$2="low";print $0}'
hi low

设置 OFS (输出字段分隔符) 变量为逗号修复了这种情况,但它确实不能解释这种行为。

我能告诉我 awk保持OFS?

最佳答案

当您修改行 ( $0 ) awk重新构造所有列并放置 OFS 的值它们之间的默认值是 空间 .您修改了 $2 的值这意味着你强制了 awk重新评估$0 .

当您按原样使用 $0 打印该行时在您的第一种情况下,由于您没有修改任何字段,awk没有重新评估每个字段,因此保留了字段分隔符。

为了保留字段分隔符,您可以指定使用:

BEGIN区块:

$ echo "hi,ho" | awk 'BEGIN{FS=OFS=","}/hi/{$2="low";print $0}'
hi,low

使用 -v选项:
$ echo "hi,ho" | awk -F, -v OFS="," '/hi/{$2="low";print $0}'
hi,low

定义在awk末尾:
$ echo "hi,ho" | awk -F, '/hi/{$2="low";print $0}' OFS=","
hi,low

关于awk - 为什么 awk 字段分配会丢失输出字段分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com