(command.CommandList children: [ (C {<echo>} { (DQ <'/* Automatically generated by '> ($ Id.VSub_Number '$0') <' */\n'> <'struct cmdname_help {\n'> <'\tchar name[16];\n'> <'\tchar help[80];\n'> <'\tunsigned char group;\n'> <'};\n'> <'\n'> <'static const char *common_cmd_groups[] = {'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:grps) op: assign_op.Equal rhs: {<grps> ($ Id.VSub_Dollar '$$') <.tmp>} spids: [20] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:match) op: assign_op.Equal rhs: {<match> ($ Id.VSub_Dollar '$$') <.tmp>} spids: [25] ) ] ) (C {<trap>} { (DQ <'rm -f \''> ($ Id.VSub_DollarName '$grps') <'\' \''> ($ Id.VSub_DollarName '$match') <'\''>) } {<0>} {<1>} {<2>} {<3>} {<15>} ) (C {<sed>} {<-n>} { (SQ <'\n'> <'\t1,/^### common groups/b\n'> <'\t/^### command list/q\n'> <'\t/^#/b\n'> <'\t/^[ \t]*$/b\n'> <'\th;s/^[^ \t][^ \t]*[ \t][ \t]*\\(.*\\)/\tN_("\\1"),/p\n'> <'\tg;s/^\\([^ \t][^ \t]*\\)[ \t].*/\\1/w '> ) ($ Id.VSub_DollarName '$grps') (SQ <'\n'> <'\t'>) } {(DQ ($ Id.VSub_Number '$1'))} ) (C {<printf>} {(SQ <'};\\n\\n'>)}) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:n) op:assign_op.Equal rhs:{<0>} spids:[81])] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:substnum) op: assign_op.Equal rhs: (word.Empty) spids: [84] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<grp>})]) body: (command.DoGroup children: [ (C {<echo>} {(DQ <'^git-..*[ \t]'> ($ Id.VSub_DollarName '$grp'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:substnum) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$substnum') (braced_var_sub token: <Id.VSub_Name substnum> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonPlus arg_word:{<';'>}) ) <'s/[ \t]'> ($ Id.VSub_DollarName '$grp') <'/'> ($ Id.VSub_DollarName '$n') <'/'> ) } spids: [103] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$n')} right: {<Id.Lit_Digits 1>} ) ) } spids: [119] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName '$grps'))} ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$match'))} ) ] ) (C {<printf>} {(SQ <'static struct cmdname_help common_cmds[] = {\\n'>)}) (command.Pipeline children: [ (C {<grep>} {<-f>} {(DQ ($ Id.VSub_DollarName '$match'))} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sed>} {(SQ <'s/^git-//'>)}) (C {<sort>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<cmd>} {<tags>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tag) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$tags'))}) (C {<sed>} {(DQ ($ Id.VSub_DollarName '$substnum') <'; s/[^0-9]//g'>)}) ] negated: F ) ) } spids: [183] ) ] ) (C {<sed>} {<-n>} {(SQ <'\n'> <'\t\t/^NAME/,/git-'>) (DQ ($ Id.VSub_DollarName '$cmd')) (SQ <'/H\n'> <'\t\t${\n'> <'\t\t\tx\n'> <'\t\t\ts/.*git-'>) (DQ ($ Id.VSub_DollarName '$cmd')) (SQ <' - \\(.*\\)/\t{"'>) (DQ ($ Id.VSub_DollarName '$cmd')) (SQ <'", N_("\\1"), '>) ($ Id.VSub_DollarName '$tag') (SQ <'},/\n'> <'\t\t\tp\n'> <'\t\t}'>) } {(DQ <'Documentation/git-'> ($ Id.VSub_DollarName '$cmd') <.txt>)} ) ] ) ) ] negated: F ) (C {<echo>} {(DQ <'};'>)}) ] )