(command.Pipeline children: [ (C {<locale>} {<-a>}) (C {<grep>} {<Id.Lit_Underscore _>}) (C {<uniq>} {<-w5>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<lang>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<echo>} {<-ne>} {(DQ ($ Id.VSub_DollarName '$lang') <Id.Lit_BadBackslash '\\'> <t>)}) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:locale_info) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<locale>} {<territory>} {<language>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [ (env_pair name: LANG val: {($ Id.VSub_DollarName '$lang')} spids: [65] ) ] do_fork: T ) ) } spids: [61] ) ] ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$locale_info')}) (C {<sed>} {(SQ <'s/\\(.*\\) \\(.*\\)/\\1 (\\2)/'>)}) ] negated: F ) ] ) ) (C {<sort>} {<-k2>}) ] negated: F )