|
|
|
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)
|
|
|
|
|
|
|
|
|