gpt4 book ai didi

ruby - 与 awk 的 RS、NF 和 OFS 等效的 Ruby 单行代码是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:34 26 4
gpt4 key购买 nike

我有这个文件:

1
2
3
4


a
b
c

XY
Z

我想将每个 block 转换为 TAB 分隔行,并在最后一列附加当前 timestamp 以获得如下输出:

1   2   3   4   1548915098
a b c 1548915098
XY Z 1548915098

我可以使用 awk 这样做:

awk '$(NF+1)=systime()' RS= OFS="\t" file

其中空的 RS 等同于集合 RS="\n\n+"

但我想使用 Ruby 一行代码来完成它。我想出了这个:

ruby -a -ne 'BEGIN{@lines=Array.new}; if ($_ !~ /^$/) then @lines.push($_.chomp) else (puts @lines.push(Time.now.to_i.to_s).join "\t"; @lines=Array.new) unless @lines.empty? end; END{puts @lines.push(Time.now.to_i.to_s).join "\t" unless @lines.empty?}' file

这有点尴尬。

有什么优雅的方法可以做到这一点吗?
是否有任何 ruby 等同于 awkRSNFOFS?
谢谢:)

最佳答案

$ awk '$(NF+1)=systime()' RS= OFS="\t" ip.txt
1 2 3 4 1548917728
a b c 1548917728
XY Z 1548917728

$ # .to_s can be ignored here, since puts will take care of it
$ ruby -00 -lane '$F.append(Time.now.to_i.to_s); puts $F.join("\t")' ip.txt
1 2 3 4 1548917730
a b c 1548917730
XY Z 1548917730
  • -00段落模式
  • -a 自动分割,结果来自$F数组
  • -l chomps 记录分隔符

关于ruby - 与 awk 的 RS、NF 和 OFS 等效的 Ruby 单行代码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54454902/

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