(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:e) op: assign_op.Equal rhs: {(DQ (Id.Lit_Other '\\') ('033['))} spids: [33] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:vline) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:40) command_list: (command.CommandList children: [ (command.Sentence child: (command.Simple words: [{(tput)} {(smacs)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:45) fd: 2 arg_word: {(/dev/null)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:47) ) (command.Sentence child: (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:x span_id:52))}) terminator: (Token id:Id.Op_Semi val:';' span_id:54) ) (command.Simple words: [{(tput)} {(rmacs)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:60) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [39] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$vline'))} {(Id.Lit_Equals '=')} {(DQ (x))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:vline) op: assign_op.Equal rhs: {(DQ ('|'))} spids: [80] ) ] ) ] ) (C {(printf)} { (DQ (${ Id.VSub_Name e) ('1;4mf') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:96) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:97)) (b) (${ Id.VSub_Name e) (0m) (${ Id.VSub_Name e) ('4m none white black red ') ('green yellow blue magenta cyan ') (${ Id.VSub_Name e) (0m) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:113) ) (n) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rows) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:brgybmcw span_id:120))} spids: [118] ) ] ) (command.ForEach iter_name: f iter_words: [ {(0)} {(7)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:134) command_list: (command.CommandList children:[(C {(seq)} {(6)})]) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no) op: assign_op.Equal rhs: {(DQ )} spids: [146] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:149) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bo) op: assign_op.Equal rhs: {(DQ )} spids: [151] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:154) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p) op: assign_op.Equal rhs: {(DQ )} spids: [156] ) ] ) (command.ForEach iter_name: b iter_words: [ {(n)} {(7)} {(0)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:173) command_list: (command.CommandList children:[(C {(seq)} {(6)})]) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:co) op: assign_op.Equal rhs: {(DQ (3) ($ Id.VSub_DollarName '$f'))} spids: [185] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:190) ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$b')} {(Id.Lit_Equals '=')} {(n)} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:co) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$co') (';4') ($ Id.VSub_DollarName '$b'))} spids: [204] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name no) (${ Id.VSub_Name e) (${ Id.VSub_Name co) ('m ') (${ Id.VSub_Name p) (${ Id.VSub_Name co) (' ') (${ Id.VSub_Name e) (0m) ) } spids: [212] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bo) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name bo) (${ Id.VSub_Name e) ('1;') (${ Id.VSub_Name co) (m) (${ Id.VSub_Name p) ('1;') (${ Id.VSub_Name co) (' ') (${ Id.VSub_Name e) (0m) ) } spids: [238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p) op: assign_op.Equal rhs: {(DQ (' '))} spids: [266] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fc) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:276) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$rows')}) (C {(cut)} {(-c) (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.VarRef token: (Token id: Id.Lit_ArithVarLike val: f span_id: 287 ) ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } ) ] negated: F ) ] ) ) } spids: [275] ) ] ) (C {(printf)} { (DQ ($ Id.VSub_DollarName '$fc') (' ') ($ Id.VSub_DollarName '$vline') ($ Id.VSub_DollarName '$no') (Id.Lit_Other '\\') (nb) ($ Id.VSub_DollarName '$fc') ($ Id.VSub_DollarName '$vline') ($ Id.VSub_DollarName '$bo') (Id.Lit_Other '\\') (n) ) } ) ] ) ) ] )