У меня есть этот файл:
1
2
3
4
a
b
c
XY
Z
Я хочу преобразовать каждый блок в 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
, эквивалентный awk
'RS
, NF
и OFS
?
Спасибо:)