gpt4 book ai didi

awk - 在最后一条记录之后使AWK中的记录分隔符不适用?

转载 作者:行者123 更新时间:2023-12-01 04:34:19 26 4
gpt4 key购买 nike

我将 ORS 更改为 ,。我发现记录分隔符适用于最后一条输出记录之后。有什么办法让它不适用于最后的输出记录?

同样。 OFS 是否也适用于最后一个字段?如果可以,我可以不做吗?

最佳答案

有几个技巧。

一种是,不使用内置 ORS。

例如代替

$ seq 5 | awk -v ORS=",\n" '{print $0}'
1,
2,
3,
4,
5,

这样做

$ seq 5 | awk '{printf "%s%s",sep,$0; sep=",\n"} END{print ""}'
1,
2,
3,
4,
5

另一个技巧是从输入文件中删除最后一个新行并使用 RT 作为代理(可能只是 gawk)

$ seq 5 | head -c -1 | awk -v ORS=",\n" '{printf "%s%s",$0,RT?ORS:""}'
1,
2,
3,
4,
5 # <-- no newline here but you can add in the END block.

对于 OFS,您可以执行类似的操作。

$ paste <(seq 5) <(seq 11 15) 
| awk -v OFS=, '{sep=""; for(i=1;i<=NF;i++) {printf "%s",sep $i*$i; sep=OFS} printf "\n"}'

1,121
4,144
9,169
16,196
25,225

请注意,如果您不是在循环中构造行,只需添加以逗号分隔的字段即可解决问题。例如打印 $1*$1, $2*$2

关于awk - 在最后一条记录之后使AWK中的记录分隔符不适用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684958/

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