Project

General

Profile

Bug #13736 ยป ruby_bug.sh

sh file demo issue - dawg (Andrew Dumke), 07/10/2017 05:05 AM

 

cd /tmp

echo "f1, r1
f2, r1 then 2 \n:

f1, r2 then 3 \n:


f1,r3
f2,r3 then 4 \n:



f1, r4
f2,r4 then 6 \n:





f1,r5" >/tmp/lines

echo "== awk =="
awk 'BEGIN{RS=""; FS="\n"; OFS="|"}
{$1=$1; printf "NR: %d, NF: %d, record: \"%s\"\n", NR, NF, $0 }' lines

echo "== perl 1 =="

perl -00 -F"\n" -lane 'BEGIN{ $\=""; $,="|"}
printf "NR: %d, NF: %d, record: \"%s\"\n", $., scalar(@F), join($,,@F)' lines

echo "== perl 2 =="

perl -F"\n" -lane 'BEGIN{ $\=""; $,="|"; $/=""}
printf "NR: %d, NF: %d, record: \"%s\"\n", $., scalar(@F), join($,,@F)' lines

echo "== ruby 1 BUG! =="

ruby -00 -F"\n" -lane 'BEGIN{$\=""; $,="|"};
printf "NR: %d, NF: %d, record: \"%s\"\n", $.,$F.length,$F.join' lines


echo "== ruby 2 =="

ruby -F"\n" -lane 'BEGIN{$\=""; $/=""; $,="|"};
printf "NR: %d, NF: %d, record: \"%s\"\n", $.,$F.length,$F.join' lines

echo "=== workaround 1 ==="
ruby -e 'i=0
$<.read.split(/\n\n+/)
.map {|record| record.split(/\n/)}
.map {|f| i+=1; printf "NR: %d, NF: %d, record: \"%s\"\n", i,f.length,f.join
}' lines

echo "=== workaround 2 ==="
ruby -00 -F"\n" -lane 'BEGIN{$/=""; $\=""; $,="|"; $i=1};
printf "NR: %d, NF: %d, record: \"%s\"\n", $.,$F.length,$F.join' <(awk 'BEGIN{RS=""} {print $0 ORS}' lines)



    (1-1/1)