(command.Pipeline children: [ (C {(locale)} {(-a)}) (C {(grep)} {(_)}) (C {(uniq)} {(-w5)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:39) cond: [ (command.Sentence child: (C {(read)} {(lang)}) terminator: (Token id:Id.Op_Semi val:';' span_id:44) ) ] body: (command.DoGroup children: [ (command.Sentence child: (C {(echo)} {(-ne)} {(DQ ($ Id.VSub_DollarName '$lang') (Id.Lit_Other '\\') (t))}) terminator: (Token id:Id.Op_Semi val:';' span_id:58) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:locale_info) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:62) command_list: (command.CommandList children: [ (command.Simple words: [{(locale)} {(territory)} {(language)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:74) fd: 2 arg_word: {(/dev/null)} ) ] more_env: [ (env_pair name: LANG val: {($ Id.VSub_DollarName '$lang')} spids: [65] ) ] ) ] ) ) } spids: [61] ) ] ) (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$locale_info')}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\(.*\\) \\(.*\\)/\\1 (\\2)/' span_id:88))} ) ] negated: F ) ] ) ) (C {(sort)} {(-k2)}) ] negated: F )