From 2f00c5b600d7222ed9093718025a06f29d04d690 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Sun, 14 Feb 2016 15:10:09 +0100 Subject: add custom joiner --- arr | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/arr b/arr index 8d5ba5a..ae312d4 100755 --- a/arr +++ b/arr @@ -8,10 +8,11 @@ USAGE = <<'EOF' Usage: arr [-0] [-P|-p PADDING] EXPR [FILES...] - EXPR ::= FIELDS (("|" CHAR | "*") FIELDS)* # | split on char, * split bytes - FIELDS ::= "~"? FIELD ("," FIELD)* # ~ negates - FIELD ::= "-"? "\d"+ # negative fields count from back - | ("-"? "\d"+)? ":" ("-"? "\d"+)? # range ends default to 1:-1 + EXPR ::= FIELDS (("|" CHAR | "*") FIELDS)* ("&" CHAR)? + # | split on char, * split bytes, & join with char + FIELDS ::= "~"? FIELD ("," FIELD)* # ~ negates + FIELD ::= "-"? "\d"+ # negative fields count from back + | ("-"? "\d"+)? ":" ("-"? "\d"+)? # range ends default to 1:-1 EOF require 'strscan' @@ -70,6 +71,10 @@ def fmt(ss, d) end } + if ss.scan(/\&(.)/) + last_split = ss[1] + end + unless ss.scan(/\}/) abort "parse error at #{ss.inspect}" end -- cgit 1.4.1