(List (Com {[LIT_OTHER ":"]} {[LIT_CHARS sorttest]} {[LIT_OTHER "["]} {[LIT_CHARS sort]} {[LIT_CHARS test-options]} {[LIT_CHARS ...]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('AWK', {[LIT_CHARS awk]})]) (= scope= flags=0 words=[] bindings=[('CC', {[VarSub CC test_op=VS_TEST_COLON_HYPHEN {[VarSub TESTCC test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS cc]}]}]})]) (= scope= flags=0 words=[] bindings=[('LC_ALL', {[LIT_CHARS C]})]) (= scope= flags=0 words=[] bindings=[('NAWK', {[LIT_CHARS nawk]})]) (= scope= flags=0 words=[] bindings=[('SUM', {[LIT_CHARS sum]})]) (= scope= flags=0 words=[] bindings=[('SORT', {[LIT_CHARS sort]})]) (= scope= flags=0 words=[] bindings=[('TMP', {[LIT_CHARS sort.tmp]})]) (= scope= flags=1 words=[{[LIT_CHARS TEST]}, {[LIT_CHARS AWK]}, {[LIT_CHARS CC]}, {[LIT_CHARS LC_ALL]}, {[LIT_CHARS SUM]}, {[LIT_CHARS SORT]}, {[LIT_CHARS TMP]}] bindings=[]) (Case to_match={[VarSub #]}, pat_word_list=[[{[LIT_CHARS 0]}]] (Com {[LIT_CHARS set]} {[VarSub SORT]}) ) (AndOr OP_AND_IF (Subshell (Com {[LIT_CHARS ulimit]} {[LIT_CHARS -n]} {[LIT_CHARS 128]}) ) (Com {[LIT_CHARS ulimit]} {[LIT_CHARS -n]} {[LIT_CHARS 128]}) ) (= scope= flags=0 words=[] bindings=[('SORT', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('SORT_ARGS', {[DQ [VarSub @]]})]) (= scope= flags=0 words=[] bindings=[('path', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_OTHER ":"] [VarSub PATH] [LIT_OTHER ":"] [LIT_CHARS /usr/5bin] [LIT_OTHER ":"] [LIT_CHARS /bin] [LIT_OTHER ":"] [LIT_CHARS /usr/bin]})]) (= scope= flags=0 words=[] bindings=[('ifs', {[VarSub IFS test_op=VS_TEST_HYPHEN {[LIT_CHARS "'\n"] [LIT_CHARS "\t '"]}]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[DQ [LIT_CHARS ":"]]})]) (Com {[LIT_CHARS set]} {[VarSub path]}) (= scope= flags=0 words=[] bindings=[('IFS', {[VarSub ifs]})]) (For dir do_arg_iter) (List (Case to_match={[VarSub dir]}, pat_word_list=[[{[DQ ]}]] (Com {[LIT_CHARS continue]}) ) (Case to_match={[VarSub NAWK]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[VarSub dir] [LIT_CHARS /] [VarSub NAWK]}) (= scope= flags=0 words=[] bindings=[('NAWK', {[VarSub dir] [LIT_CHARS /] [VarSub NAWK]})]) (ElseTrue) (Case to_match={[VarSub AWK]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[VarSub dir] [LIT_CHARS /] [VarSub AWK]}) (= scope= flags=0 words=[] bindings=[('AWK', {[VarSub dir] [LIT_CHARS /] [VarSub AWK]})]) ) ) ) ) (Case to_match={[VarSub SORT]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[VarSub dir] [LIT_CHARS /] [VarSub SORT]}) (= scope= flags=0 words=[] bindings=[('SORT', {[VarSub dir] [LIT_CHARS /] [VarSub SORT]})]) ) ) (Case to_match={[VarSub SUM]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[VarSub dir] [LIT_CHARS /] [VarSub SUM]}) (List (= scope= flags=0 words=[] bindings=[('AB', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('BA', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('ab', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub AB]]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub SUM]}) )]})]) (= scope= flags=0 words=[] bindings=[('ba', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub BA]]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub SUM]}) )]})]) (Case to_match={[VarSub ab]}, pat_word_list=[[{[VarSub ba]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('SUM', {[VarSub dir] [LIT_CHARS /] [VarSub SUM]})]) (For old [{[LIT_CHARS -o]}, {[SQ ]}, {[LIT_CHARS -s]}, {[LIT_CHARS -xatt]}]) (List (= scope= flags=0 words=[] bindings=[('ab', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub AB]]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub dir] [LIT_CHARS /] [VarSub SUM]} {[VarSub old]}) )]})]) (Case to_match={[VarSub ab]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('ba', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub BA]]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub dir] [LIT_CHARS /] [VarSub SUM]} {[VarSub old]}) )]})]) (Case to_match={[VarSub ab]}, pat_word_list=[[{[VarSub ba]}]] (List (= scope= flags=0 words=[] bindings=[('SUM', {[DQ [VarSub dir][LIT_CHARS /][VarSub SUM][LIT_CHARS " "][VarSub old]]})]) (Com {[LIT_CHARS break]}) ) ) ) ) ) ) ) ) ) ) ) ) (Case to_match={[VarSub NAWK]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('AWK', {[VarSub NAWK]})]) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS pathname]} {[LIT_CHARS and]} {[LIT_CHARS options]} {[LIT_CHARS of]} {[LIT_CHARS item]} {[LIT_CHARS under]} {[LIT_CHARS test]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub SORT][LIT_CHARS "\t"][VarSub SORT_ARGS]]}) (Com {[LIT_CHARS echo]}) (= scope= flags=0 words=[] bindings=[('SORT', {[DQ [VarSub SORT][LIT_CHARS " "][VarSub SORT_ARGS]]})]) (Com {[LIT_CHARS trap]} {[DQ [LIT_CHARS "cd ..; rm -rf "][VarSub TMP][LIT_CHARS "; exit"]]} {[LIT_CHARS 0]} {[LIT_CHARS 1]} {[LIT_CHARS 2]} {[LIT_CHARS 13]} {[LIT_CHARS 15]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub TMP]}) (If (Com {[LIT_CHARS mkdir]} {[VarSub TMP]}) (Com {[LIT_CHARS cd]} {[VarSub TMP]}) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "mkdir "][VarSub TMP][LIT_CHARS " FAILED"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('o', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('O', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('g', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('k', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('M', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('s', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('S', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('x', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('X', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('y', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS obsolescent]} {[LIT_CHARS and]} {[LIT_CHARS nonstandard]} {[LIT_CHARS features]} {[LIT_CHARS recognized] [LIT_COMMA ","]} {[LIT_CHARS if]} {[LIT_CHARS any]}) (If (Com {[VarSub SORT]} {[LIT_OTHER "+"] [LIT_CHARS 0]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('o', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS /dev/null]} {[LIT_CHARS -o]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('O', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -g]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('g', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS Xcx.by.az]} {[LIT_OTHER "="]} {[LIT_CHARS X] [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[LIT_CHARS by.cx.az]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub SORT]} {[LIT_CHARS -R3]} {[LIT_CHARS -k.2.1]}) )]}) (List (= scope= flags=0 words=[] bindings=[('k', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -M]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('M', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -s]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('s', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -S]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('S', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -x]} {[LIT_CHARS default]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('x', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS Xok]} {[LIT_OTHER "="]} {[LIT_CHARS X] [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub SORT]} {[LIT_CHARS -Xtest]})]}) (List (= scope= flags=0 words=[] bindings=[('X', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -y4096]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('y', {[LIT_CHARS -y4096]})]) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -z10000]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[SQ ]}) ) (If (Com {[VarSub SORT]} {[LIT_CHARS -T.]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[SQ ]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xsort]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "\n"][LIT_CHARS "\tcase "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "1 in\n"][LIT_CHARS "\t-)\tF=-; shift ;;\n"][LIT_CHARS "\t*)\tF=in ;;\n"][LIT_CHARS "\tesac\n"][LIT_CHARS "\tX="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "1; shift\n"][LIT_CHARS "\n"][LIT_CHARS "\tif "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "SORT "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "F >xx && "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "SORT -c "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " xx 2>/dev/null\n"][LIT_CHARS "\tthen \n"][LIT_CHARS "\t\tif test -f out\n"][LIT_CHARS "\t\tthen\n"][LIT_CHARS "\t\t\tcmp -s xx out >/dev/null && exit 0\n"][LIT_CHARS "\t\t\techo "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS TEST][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "X comparison FAILED\n"][LIT_CHARS "\t\telse\n"][LIT_CHARS "\t\t\ttest "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\`"][VarSub SUM][LIT_CHARS " 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS xsort]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "error=0 warning=0 works=0\n"][VarSub SORT][LIT_CHARS " "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " 2>out in1 || error=1\n"][LIT_CHARS "test -s out && warning=1\n"][LIT_CHARS "test -s in1 && works=1\n"][LIT_CHARS "case "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS error][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS warning][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "works in\n"][LIT_CHARS "000)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " does not indicate trouble, but does not sort ;;\n"][LIT_CHARS "001)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " does not indicate trouble ;;\n"][LIT_CHARS "010)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " warns, does not sort, and yields exit status zero ;;\n"][LIT_CHARS "011)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " warns and continues ;;\n"][LIT_CHARS "100)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " yields nonzero exit status and does not sort ;;\n"][LIT_CHARS "101)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " yields nonzero exit status, but sorts ;;\n"][LIT_CHARS "111)\techo "][RIGHT_D_QUOTE "\""][LIT_CHARS "\t"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS " warns and yields nonzero exit status, but sorts\n"][LIT_CHARS "esac\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS ysort]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS ysort]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS linecount]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=False body_word={[LIT_CHARS "$AWK 'END{ if(NR!='$3') print \"'$TEST$1' FAILED\" }' $2\n"]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS linecount]}) (Case to_match={[VarSub S]}, pat_word_list=[[{[SQ ]}]] (= scope= flags=0 words=[] bindings=[('SORT', {[DQ [VarSub SORT][LIT_CHARS " -S"]]})]) ) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "behavior in questionable cases (other than message and exit)"]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS hi]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS nosuchfile]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS nosuchfile]}) (If (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[LIT_CHARS unwritablefile]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS x]} < (FilenameRedirectNode filename={[LIT_CHARS unwritablefile]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS 0]} {[LIT_CHARS unwritablefile]}) ) ) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -o]} {[LIT_CHARS unwritablefile]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS in]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -]} {[LIT_CHARS -]}) ) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS --]} {[LIT_CHARS in]}) (For i [{[LIT_CHARS -k]}, {[LIT_CHARS -k0]}, {[LIT_CHARS -k-1]}, {[LIT_CHARS -k1] [LIT_COMMA ","]}, {[LIT_CHARS -kb]}, {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 2u]}, {[LIT_CHARS -t]}, {[LIT_CHARS -o]}]) (Com {[LIT_CHARS ./ysort]} {[VarSub i]}) ) (Com {[VarSub g]} {[LIT_CHARS ./ysort]} {[LIT_CHARS -n]} {[LIT_CHARS -g]}) (Com {[VarSub M]} {[LIT_CHARS ./ysort]} {[LIT_CHARS -n]} {[LIT_CHARS -M]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -d]} {[LIT_CHARS -i]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -n]} {[LIT_CHARS -i]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -c]} {[LIT_CHARS in]} {[LIT_CHARS in]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -t.]} {[LIT_CHARS -t] [LIT_OTHER ":"]}) (For i [{[LIT_CHARS -a]}, {[LIT_CHARS -e]}, {[LIT_CHARS -h]}, {[LIT_CHARS -j]}, {[LIT_CHARS -p]}, {[LIT_CHARS -q]}, {[LIT_CHARS -v]}, {[LIT_CHARS -w]}, {[LIT_CHARS -x]}, {[LIT_CHARS -0]}, {[LIT_CHARS -1]}, {[LIT_CHARS -2]}]) (Com {[LIT_CHARS ./ysort]} {[VarSub i]}) ) (AndOr OP_AND_IF (Com {[VarSub g]} {[LIT_CHARS false]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -g]}) ) (AndOr OP_AND_IF (Com {[VarSub s]} {[LIT_CHARS false]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -s]}) ) (AndOr OP_AND_IF (Com {[VarSub z]} {[LIT_CHARS false]}) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -z]}) ) (Case to_match={[DQ [VarSub y]]}, pat_word_list=[[{[DQ ]}]] (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -y]}) ) (Com {[LIT_CHARS ./ysort]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS -f]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "A\tb\n"][LIT_CHARS "a\tbc\n"][LIT_CHARS "a\tBd\n"][LIT_CHARS "B\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in1]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "A\tb\n"][LIT_CHARS "B\n"][LIT_CHARS "a\tbc\n"][LIT_CHARS "a\tBd\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in2]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "A\tb\n"][LIT_CHARS "B\n"][LIT_CHARS "a\tBd\n"][LIT_CHARS "a\tbc\n"]]} 0), > ) (If (Com {[VarSub SORT]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS -f]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2]} < (FilenameRedirectNode filename={[LIT_CHARS in]} 0), (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (= scope= flags=0 words=[] bindings=[('opt', {[DQ [LIT_CHARS "-k1,1 -f -k2,2 :"]]})]) (If (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS out]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub opt][LIT_CHARS " -f applies to fields 1 and 2"]]}) (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS out]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub opt][LIT_CHARS " -f applies to field 2 only"]]}) (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS out]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub opt][LIT_CHARS " -f ineffectual"]]}) (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS out]} {[LIT_CHARS /dev/null]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub opt][LIT_CHARS " exit status zero, but no output"]]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "\t"][VarSub opt][LIT_CHARS " inexplicable"]]}) ) ) ) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "generating large data files for tests that follow (long)"]]}) (Pipeline (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[LIT_CHARS e]} < (FilenameRedirectNode filename={[LIT_CHARS 14.in]} "> 1), > ) ) (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS 15.in]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS test]} {[LIT_CHARS numbers]} {[LIT_CHARS denote]} {[LIT_CHARS progress] [LIT_COMMA ","]} {[LIT_CHARS not]} {[LIT_CHARS trouble]}) (Case to_match={[VarSub x]}, pat_word_list=[[{[SQ ]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS set]} {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0)]{[VarSub SORT]} {[LIT_CHARS --list]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]}) (Com {[LIT_CHARS set]} {[SQ ]}) ) (= scope= flags=0 words=[] bindings=[('COMMAND', {[VarSub SORT]})]) (While (Com {[LIT_OTHER ":"]}) (List (Case to_match={[VarSub #]}, pat_word_list=[[{[LIT_CHARS 0]}]] (Com {[LIT_CHARS break]}) ) (= scope= flags=0 words=[] bindings=[('METHOD', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (Case to_match={[VarSub METHOD]}, pat_word_list=[[{[LIT_CHARS check]}, {[LIT_CHARS copy]}, {[LIT_CHARS verify]}], [{[SQ ]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS continue]}) (Com {[LIT_CHARS echo]}) (List (= scope= flags=0 words=[] bindings=[('SORT', {[DQ [VarSub COMMAND][LIT_CHARS " -x "][VarSub METHOD]]})]) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "testing the "][VarSub METHOD][LIT_CHARS " method"]]}) (Com {[LIT_CHARS echo]}) ) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 01]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-c status, checksum"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "b\n"][LIT_CHARS "a\n"]]} 0), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS out]} {[LIT_CHARS -o]}) (AndOr OP_AND_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[VarSub SUM]} {[LIT_CHARS is]} {[LIT_CHARS probably]} {[LIT_CHARS unsuitable]} {[LIT_CHARS -]} {[LIT_CHARS see]} {[LIT_CHARS comments]}) ) (AndOr OP_OR_IF (Com {[VarSub o]} {[VarSub SORT]} {[LIT_CHARS -o]} {[LIT_CHARS in]} {[LIT_OTHER "+"] [LIT_CHARS 0]} {[LIT_CHARS in]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 02]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "output from -c"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "x\n"][LIT_CHARS "y\n"]]} 0), > ) (AndOr OP_AND_IF (Com {[VarSub SORT]} {[LIT_CHARS -cr]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[LIT_CHARS out]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[LIT_CHARS xx]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS option]} {[LIT_CHARS -c]} {[LIT_CHARS is]} {[LIT_CHARS quiet]} {[DQ [LIT_CHARS "(legal, not classical)"]]}) ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS /dev/null]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[LIT_CHARS xx]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS D]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 03]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS -n]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "-99.0\n"][LIT_CHARS "-99.1\n"][LIT_CHARS "-.0002\n"][LIT_CHARS " -10\n"][LIT_CHARS "2\n"][LIT_CHARS "2.0x\n"][LIT_CHARS "2.0.1\n"][LIT_CHARS "0010.000000000000000000000000000000000001\n"][LIT_CHARS "10\n"][LIT_CHARS "3x\n"][LIT_CHARS "x\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "-99.1\n"][LIT_CHARS "-99.0\n"][LIT_CHARS " -10\n"][LIT_CHARS "-.0002\n"][LIT_CHARS "x\n"][LIT_CHARS "2\n"][LIT_CHARS "2.0.1\n"][LIT_CHARS "2.0x\n"][LIT_CHARS "3x\n"][LIT_CHARS "10\n"][LIT_CHARS "0010.000000000000000000000000000000000001\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -n]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 04]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-b without fields, piping, -c status return"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " b\n"][LIT_CHARS " a\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -b]}) (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS in]}) (Com {[VarSub SORT]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS xx]} {[LIT_CHARS out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (AndOr OP_AND_IF (Pipeline (Com {[VarSub SORT]} {[LIT_CHARS in]}) (Com {[VarSub SORT]} {[LIT_CHARS -cr]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 05]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "fields, reverse fields, -c status return"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "b b p\n"][LIT_CHARS "a b q\n"][LIT_CHARS "x a\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "x a\n"][LIT_CHARS "a b q\n"][LIT_CHARS "b b p\n"]]} 0), > ) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_OTHER "+"] [LIT_CHARS 1]} {[LIT_CHARS -2]}) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_OTHER "+"] [LIT_CHARS 1]} {[LIT_CHARS -2]} {[LIT_OTHER "+"] [LIT_CHARS 2r]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -k]} {[LIT_CHARS 2] [LIT_COMMA ","] [LIT_CHARS 2]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS D]} {[LIT_CHARS -k]} {[LIT_CHARS 2] [LIT_COMMA ","] [LIT_CHARS 2]} {[LIT_CHARS -k]} {[LIT_CHARS 3r]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS E]} {[LIT_CHARS -k]} {[LIT_CHARS 2] [LIT_COMMA ","] [LIT_CHARS 2.0]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS F]} {[LIT_CHARS -k]} {[LIT_CHARS 2] [LIT_COMMA ","] [LIT_CHARS 2]} {[LIT_CHARS -k]} {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS -k]} {[LIT_CHARS 3]}) (AndOr OP_AND_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -k]} {[LIT_CHARS 2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[VarSub TEST] [LIT_CHARS G]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 06]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS -t]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a:\n"][LIT_CHARS "a!\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -t]} {[LIT_OTHER ":"]} {[LIT_CHARS -r]} {[LIT_OTHER "+"] [LIT_CHARS 0]}) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -t]} {[LIT_OTHER ":"]} {[LIT_OTHER "+"] [LIT_CHARS 0]} {[LIT_CHARS -1]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -t]} {[LIT_OTHER ":"]} {[LIT_CHARS -r]} {[LIT_CHARS -k]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS D]} {[LIT_CHARS -t]} {[LIT_OTHER ":"]} {[LIT_CHARS -k]} {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 07]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-t, character positions in fields"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS ": ab\n"][LIT_CHARS ":bac\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS ":bac\n"][LIT_CHARS ": ab\n"]]} 0), > ) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -b]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_OTHER "+"] [LIT_CHARS 1.1]}) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_OTHER "+"] [LIT_CHARS 1.1r]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -b]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k]} {[LIT_CHARS 2.2]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS D]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k]} {[LIT_CHARS 2.2r]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 08]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "space and tab as -t characters"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " b c\n"][LIT_CHARS " b\tc\n"][LIT_CHARS "\tb c\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -t]} {[SQ ]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -t]} {[SQ ]} {[LIT_CHARS -k2.1] [LIT_COMMA ","] [LIT_CHARS 2.0]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " b c\n"][LIT_CHARS "\tb c\n"][LIT_CHARS " b\tc\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -t]} {[SQ ]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS D]} {[LIT_CHARS -t]} {[SQ ]} {[LIT_CHARS -k2.1] [LIT_COMMA ","] [LIT_CHARS 2.0]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " b\tc\n"][LIT_CHARS "\tb c\n"][LIT_CHARS " b c\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS E]} {[LIT_CHARS -k2]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "\tb c\n"][LIT_CHARS " b\tc\n"][LIT_CHARS " b c\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS F]} {[LIT_CHARS -k2b]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 09]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "alphabetic as -t character"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "zXa\n"][LIT_CHARS "yXa\n"][LIT_CHARS "zXb\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -tX]} {[LIT_CHARS -k2]} {[LIT_CHARS -k1r] [LIT_COMMA ","] [LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 10]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS -m]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a\n"][LIT_CHARS "ab\n"][LIT_CHARS "ab\n"][LIT_CHARS "bc\n"][LIT_CHARS "ca\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in1]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "Z\n"][LIT_CHARS "a\n"][LIT_CHARS "aa\n"][LIT_CHARS "ac\n"][LIT_CHARS "c\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "Z\n"][LIT_CHARS "a\n"][LIT_CHARS "a\n"][LIT_CHARS "aa\n"][LIT_CHARS "ab\n"][LIT_CHARS "ab\n"][LIT_CHARS "ac\n"][LIT_CHARS "bc\n"][LIT_CHARS "c\n"][LIT_CHARS "ca\n"]]} 0), > ) (Com {[VarSub SORT]} {[LIT_CHARS -m]} {[LIT_CHARS in]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS xx]} {[LIT_CHARS out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 11]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "multiple files, -o overwites input, -m, -mu"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a\n"][LIT_CHARS "b\n"][LIT_CHARS "c\n"][LIT_CHARS "d\n"]]} 0), > ) (Com {[VarSub SORT]} {[LIT_CHARS -o]} {[LIT_CHARS xx]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]}) (Com {[LIT_CHARS ./linecount]} {[LIT_CHARS A]} {[LIT_CHARS xx]} {[LIT_CHARS 68]}) (Com {[VarSub SORT]} {[LIT_CHARS -o]} {[LIT_CHARS in]} {[LIT_CHARS -mu]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]}) (Com {[LIT_CHARS ./linecount]} {[LIT_CHARS B]} {[LIT_CHARS in]} {[LIT_CHARS 4]}) (Com {[VarSub SORT]} {[LIT_CHARS -o]} {[LIT_CHARS in]} {[LIT_CHARS -m]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in]}) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS in]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 12]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "does -mu pick the first among equals?"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "3B\n"][LIT_CHARS "3b\n"][LIT_CHARS "3B2\n"][LIT_CHARS "~3B2\n"][LIT_CHARS "4.1\n"][LIT_CHARS "41\n"][LIT_CHARS "5\n"][LIT_CHARS "5.\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "3B\n"][LIT_CHARS "3B2\n"][LIT_CHARS "4.1\n"][LIT_CHARS "5\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -mudf]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "(other behavior is legal, not classical)"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -mudf]} {[LIT_CHARS -k1]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "(other behavior is legal, not classical)"]]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 13]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "long records (>8000 bytes, keys >16000), -r"]]}) (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[VarSub AWK]} {[SQ =15; i--) print x i\n"> ]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -r]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -k]} {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS 1r]} {[LIT_CHARS -k]} {[LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 14]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-n and -u"]]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS 14.in]} {[LIT_CHARS in]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -n]}) (Com {[VarSub AWK]} {[SQ ] [VarSub TEST] [LIT_CHARS C] [SQ \"out\"; x = $0 }\n">]} {[LIT_CHARS xx]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -n]} {[LIT_CHARS -u]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 15]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "force intermediate files if possible"]]}) (Case to_match={[DQ [VarSub y]]}, pat_word_list=[[{[DQ ]}]] (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[LIT_CHARS inadequate]} {[LIT_CHARS test]} {[LIT_CHARS of]} {[LIT_CHARS large]} {[LIT_CHARS files]} {[LIT_CHARS -]} {[LIT_CHARS revise]} {[LIT_CHARS parameters]}) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS 15.in]} {[LIT_CHARS in]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -r]} {[VarSub y]}) (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS in]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS -]} {[LIT_CHARS B]} {[LIT_CHARS -r]} {[VarSub y]}) ) (Com {[VarSub X]} {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -r]} {[VarSub y]} {[LIT_CHARS -Xread]}) (Pipeline (Com {[VarSub X]} {[LIT_CHARS cat]} {[LIT_CHARS in]}) (Com {[VarSub X]} {[LIT_CHARS ./xsort]} {[LIT_CHARS -]} {[LIT_CHARS D]} {[LIT_CHARS -r]} {[VarSub y]} {[LIT_CHARS -Xread]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS in1]}) (Com {[VarSub SORT]} {[LIT_CHARS -r]} {[LIT_CHARS -o]} {[LIT_CHARS in1]} {[LIT_CHARS in]}) (Com {[VarSub AWK]} {[SQ ]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS E]} {[LIT_CHARS -u]} {[LIT_CHARS -r]} {[VarSub y]}) (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS in]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS -]} {[LIT_CHARS F]} {[LIT_CHARS -u]} {[LIT_CHARS -r]} {[VarSub y]}) ) (Com {[VarSub X]} {[LIT_CHARS ./xsort]} {[LIT_CHARS G]} {[LIT_CHARS -u]} {[LIT_CHARS -r]} {[VarSub y]} {[LIT_CHARS -Xread]}) (Pipeline (Com {[VarSub X]} {[LIT_CHARS cat]} {[LIT_CHARS in]}) (Com {[VarSub X]} {[LIT_CHARS ./xsort]} {[LIT_CHARS -]} {[LIT_CHARS H]} {[LIT_CHARS -u]} {[LIT_CHARS -r]} {[VarSub y]} {[LIT_CHARS -Xread]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -r]} {[LIT_CHARS -u]} {[LIT_CHARS -m]} {[LIT_CHARS -o]} {[LIT_CHARS in1]} {[LIT_CHARS in1]}) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS in1]} {[LIT_CHARS out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS I]} {[LIT_CHARS FAILED]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS in]} {[LIT_CHARS in1]} {[LIT_CHARS out]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 16]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-nr, -nm, file name -"]]}) (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Pipeline (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[VarSub SORT]} {[LIT_CHARS -nr]} {[LIT_CHARS in]} {[LIT_CHARS -]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) ) (Com {[VarSub AWK]} {[SQ ] [VarSub TEST] [LIT_CHARS A] [SQ ]} {[LIT_CHARS xx]}) (Pipeline (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[VarSub SORT]} {[LIT_CHARS -mn]} {[LIT_CHARS -]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) ) (Com {[VarSub AWK]} {[SQ ] [VarSub TEST] [LIT_CHARS B] [SQ ]} {[LIT_CHARS xx]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 17]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-d, fields without end, modifier override"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a-B\n"][LIT_CHARS "a+b\n"][LIT_CHARS "a b\n"][LIT_CHARS "A+b\n"][LIT_CHARS "a\tb\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a\tb\n"][LIT_CHARS "a b\n"][LIT_CHARS "A+b\n"][LIT_CHARS "a-B\n"][LIT_CHARS "a+b\n"]]} 0), > ) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -df]} {[LIT_OTHER "+"] [LIT_CHARS 0]} {[LIT_OTHER "+"] [LIT_CHARS 0d]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -df]} {[LIT_CHARS -k]} {[LIT_CHARS 1]} {[LIT_CHARS -k]} {[LIT_CHARS 1d]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 18]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-u on key only"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "12\ty\n"][LIT_CHARS "13\tz\n"][LIT_CHARS "12\tx\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "12\tx\n"][LIT_CHARS "12\ty\n"][LIT_CHARS "13\tz\n"]]} 0), > ) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_OTHER "+"] [LIT_CHARS 0]} {[LIT_CHARS -1]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -k]} {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS 1]}) (Com {[VarSub SORT]} {[LIT_CHARS -u]} {[LIT_CHARS -k]} {[LIT_CHARS 1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (Com {[LIT_CHARS ./linecount]} {[LIT_CHARS C]} {[LIT_CHARS xx]} {[LIT_CHARS 2]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 19]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-i, -d, -f"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xx.c]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "static void run(int i, int j){ for( ; i<=j; i++) printf("][RIGHT_D_QUOTE "\""][LIT_CHARS "%.3o %c"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS ",i,i); }\n"][LIT_CHARS "int main(){\trun(0, 011);\t\t/* 012=='"][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS "' */\n"][LIT_CHARS "\trun(013, 0377);\n"][LIT_CHARS "\treturn 0; }\n"]]} 0), > ) (Com {[VarSub CC]} {[LIT_CHARS -o]} {[LIT_CHARS xx.exe]} {[LIT_CHARS xx.c]}) (Com {[LIT_CHARS ./xx.exe]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xx.c]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "static void run(int i, int j){ for( ; i<=j; i++) printf("][RIGHT_D_QUOTE "\""][LIT_CHARS "%.3o %c"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS ",i,i); }\n"][LIT_CHARS "int main(){ run(0, 011);\n"][LIT_CHARS "\trun(013, ' '-1);\n"][LIT_CHARS "\trun(0177, 0377);\n"][LIT_CHARS "\trun(' ', 0176);\n"][LIT_CHARS "\treturn 0; }\n"]]} 0), > ) (Com {[VarSub CC]} {[LIT_CHARS -o]} {[LIT_CHARS xx.exe]} {[LIT_CHARS xx.c]}) (Com {[LIT_CHARS ./xx.exe]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -i]} {[LIT_CHARS -k]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xx.c]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "static void run(int i, int j){ for( ; i<=j; i++) printf("][RIGHT_D_QUOTE "\""][LIT_CHARS "%.3o %c"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS ",i,i); }\n"][LIT_CHARS "int main(){\trun(0, 010);\t\t/* 011=='"][\ LIT_ESCAPED_CHAR "\\t"][LIT_CHARS "', 012=='"][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS "' */\n"][LIT_CHARS "\trun(013, ' '-1);\n"][LIT_CHARS "\trun(' '+1, '0'-1);\n"][LIT_CHARS "\trun('9'+1, 'A'-1);\n"][LIT_CHARS "\trun('Z'+1, 'a'-1);\n"][LIT_CHARS "\trun('z'+1, 0377);\n"][LIT_CHARS "\trun('"][\ LIT_ESCAPED_CHAR "\\t"][LIT_CHARS "', '"][\ LIT_ESCAPED_CHAR "\\t"][LIT_CHARS "');\n"][LIT_CHARS "\trun(' ', ' ');\n"][LIT_CHARS "\trun('0', '9');\n"][LIT_CHARS "\trun('A', 'Z');\n"][LIT_CHARS "\trun('a', 'z');\n"][LIT_CHARS "\treturn 0; }\n"]]} 0), > ) (Com {[VarSub CC]} {[LIT_CHARS -o]} {[LIT_CHARS xx.exe]} {[LIT_CHARS xx.c]}) (Com {[LIT_CHARS ./xx.exe]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -d]} {[LIT_CHARS -k]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xx.c]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "static void run(int i, int j){ for( ; i<=j; i++) printf("][RIGHT_D_QUOTE "\""][LIT_CHARS "%.3o %c"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS ",i,i); }\n"][LIT_CHARS "int main(){\tint i;\n"][LIT_CHARS "\trun(0, 011);\n"][LIT_CHARS "\trun(013, 'A'-1);\n"][LIT_CHARS "\tfor(i='A'; i<='Z'; i++) \n"][LIT_CHARS "\t\tprintf("][RIGHT_D_QUOTE "\""][LIT_CHARS "%.3o %c"][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS "%.3o %c"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS ",i,i,i+040,i+040);\n"][LIT_CHARS "\trun('Z'+1, 'a'-1);\n"][LIT_CHARS "\trun('z'+1, 0377);\n"][LIT_CHARS "\treturn 0; }\n"]]} 0), > ) (Com {[VarSub CC]} {[LIT_CHARS -o]} {[LIT_CHARS xx.exe]} {[LIT_CHARS xx.c]}) (Com {[LIT_CHARS ./xx.exe]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS xx.c]} {[LIT_CHARS xx.o]} {[LIT_CHARS xx.exe]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -f]} {[LIT_CHARS -k]} {[LIT_CHARS 2]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 20]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-d, -f, -b applies only to fields"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " b\n"][LIT_CHARS "'C\n"][LIT_CHARS "a\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -d]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -f]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " b\n"][LIT_CHARS "a\n"][LIT_CHARS "'C\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -dfb]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 21]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "behavior of null bytes"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS xx.c]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=False body_word={[LIT_CHARS "#include \n"] [LIT_CHARS "int main() { printf(\"\\n%cb\\n%ca\\n\",0,0); return 0; }\n"]} 0), > ) (Com {[VarSub CC]} {[LIT_CHARS -o]} {[LIT_CHARS xx.exe]} {[LIT_CHARS xx.c]}) (Com {[LIT_CHARS ./xx.exe]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), > ) (Com {[VarSub SORT]} {[LIT_CHARS -u]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS in]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS in]} 0)]{[LIT_CHARS wc]} {[LIT_CHARS -c]})]]} {[LIT_OTHER "="]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS xx]} 0)]{[LIT_CHARS wc]} {[LIT_CHARS -c]})]]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS xx.c]} {[LIT_CHARS xx.o]} {[LIT_CHARS xx.exe]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 22]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "field limits"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a\t2\n"][LIT_CHARS "a\t1\n"][LIT_CHARS "b\t2\n"][LIT_CHARS "b\t1\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "b\t1\n"][LIT_CHARS "b\t2\n"][LIT_CHARS "a\t1\n"][LIT_CHARS "a\t2\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -r]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS -k2n]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 23]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "empty file, compact -o"]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS hi]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (Com {[VarSub SORT]} {[LIT_CHARS -oxx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS xx]} {[LIT_CHARS /dev/null]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -cu]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 24]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "many fields"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "0:2:3:4:5:6:7:8:9\n"][LIT_CHARS "1:1:3:4:5:6:7:8:9\n"][LIT_CHARS "1:2:2:4:5:6:7:8:9\n"][LIT_CHARS "1:2:3:3:5:6:7:8:9\n"][LIT_CHARS "1:2:3:4:4:6:7:8:9\n"][LIT_CHARS "1:2:3:4:5:5:7:8:9\n"][LIT_CHARS "1:2:3:4:5:6:6:8:9\n"][LIT_CHARS "1:2:3:4:5:6:7:7:9\n"][LIT_CHARS "1:2:3:4:5:6:7:8:8\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "1:2:3:4:5:6:7:8:8\n"][LIT_CHARS "1:2:3:4:5:6:7:7:9\n"][LIT_CHARS "1:2:3:4:5:6:6:8:9\n"][LIT_CHARS "1:2:3:4:5:5:7:8:9\n"][LIT_CHARS "1:2:3:4:4:6:7:8:9\n"][LIT_CHARS "1:2:3:3:5:6:7:8:9\n"][LIT_CHARS "1:2:2:4:5:6:7:8:9\n"][LIT_CHARS "1:1:3:4:5:6:7:8:9\n"][LIT_CHARS "0:2:3:4:5:6:7:8:9\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k9]} {[LIT_CHARS -k8]} {[LIT_CHARS -k7]} {[LIT_CHARS -k6]} {[LIT_CHARS -k5]} {[LIT_CHARS -k4]} {[LIT_CHARS -k3]} {[LIT_CHARS -k2]} {[LIT_CHARS -k1]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 25]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "variously specified alpha fields"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "01:04:19:01:16:01:21:01 a\n"][LIT_CHARS "02:03:13:15:13:19:15:02 a\n"][LIT_CHARS "03:02:07:09:07:13:09:03 a\n"][LIT_CHARS "04:01:01:03:01:07:03:04 a\n"][LIT_CHARS "05:08:20:16:17:02:20:05 aa\n"][LIT_CHARS "06:07:14:18:14:20:14:06 aa\n"][LIT_CHARS "07:06:08:10:08:14:08:07 aa\n"][LIT_CHARS "08:05:02:04:02:08:02:08 aa\n"][LIT_CHARS "09:16:22:02:22:04:24:13 b\n"][LIT_CHARS "10:15:16:20:19:22:18:14 b\n"][LIT_CHARS "11:14:10:12:10:16:12:15 b\n"][LIT_CHARS "12:13:04:06:04:10:06:16 b\n"][LIT_CHARS "13:24:24:22:24:06:22:21 bb\n"][LIT_CHARS "14:23:18:24:21:24:16:22 bb\n"][LIT_CHARS "15:22:12:14:12:18:10:23 bb\n"][LIT_CHARS "16:21:06:08:06:12:04:24 bb\n"][LIT_CHARS "17:12:21:21:18:03:19:09 ab\n"][LIT_CHARS "18:11:15:19:15:21:13:10 ab\n"][LIT_CHARS "19:10:09:11:09:15:07:11 ab\n"][LIT_CHARS "20:09:03:05:03:09:01:12 ab\n"][LIT_CHARS "21:20:23:17:23:05:23:17 ba\n"][LIT_CHARS "22:19:17:23:20:23:17:18 ba\n"][LIT_CHARS "23:18:11:13:11:17:11:19 ba\n"][LIT_CHARS "24:17:05:07:05:11:05:20 ba\n"]]} 0), > ) (Com {[VarSub SORT]} {[LIT_CHARS -k2b]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k2n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2.1b]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k3n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -k2.3]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k4n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -k2b] [LIT_COMMA ","] [LIT_CHARS 2.3]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k5n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS D]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -k2.3] [LIT_COMMA ","] [LIT_CHARS 2.1b]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k6n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS E]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2.1b]} {[LIT_CHARS -k2r]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k7n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS F]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -b]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k8n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS G]} {[LIT_CHARS FAILED]}) ) (Com {[VarSub SORT]} {[LIT_CHARS -b]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2b]} {[LIT_CHARS -k2]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -t] [LIT_OTHER ":"]} {[LIT_CHARS -k3n]} {[LIT_CHARS xx]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS H]} {[LIT_CHARS FAILED]} {[DQ [LIT_CHARS "(standard is not clear on this)"]]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 26]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "empty fields, out of bounds fields\t"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "0 5\n"][LIT_CHARS "1 4\n"][LIT_CHARS "2 3\n"][LIT_CHARS "3 2\n"][LIT_CHARS "4 1\n"][LIT_CHARS "5 0\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -k2.2] [LIT_COMMA ","] [LIT_CHARS 2.1]} {[LIT_CHARS -k2.3] [LIT_COMMA ","] [LIT_CHARS 2.4]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 27]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "displaced -o"]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS out]}) (AndOr OP_OR_IF (Com {[VarSub O]} {[VarSub SORT]} {[LIT_CHARS /dev/null]} {[LIT_CHARS -o]} {[LIT_CHARS out]}) (Com {[VarSub o]} {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[VarSub O]} {[LIT_CHARS test]} {[LIT_CHARS -f]} {[LIT_CHARS out]}) (Com {[VarSub O]} {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 28]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "apparently nonmonotone field specs"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "aaaa c\n"][LIT_CHARS "x a\n"][LIT_CHARS "0 b\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[VarSub o]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_OTHER "+"] [LIT_CHARS 1]} {[LIT_CHARS -0.3]} {[LIT_OTHER "+"] [LIT_CHARS 1.4]} {[LIT_CHARS -1.5]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 1.3]} {[LIT_CHARS -k2.5] [LIT_COMMA ","] [LIT_CHARS 2.5]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 29]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "determination of end of option list"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS -k]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "x\n"]]} 0), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS out]} {[LIT_CHARS -c]}) (AndOr OP_OR_IF (Com {[VarSub SORT]} {[LIT_CHARS --]} {[LIT_CHARS -k]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS argument]} {[LIT_CHARS FAILED]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS xx]} {[LIT_CHARS -k]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS comparison]} {[LIT_CHARS FAILED]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "xxx\n"]]} 0), > ) (Com < (FilenameRedirectNode filename={[LIT_CHARS -]} "> 1), > ) (Com < (FilenameRedirectNode filename={[LIT_CHARS -o]} "> 1), > ) (Com < (FilenameRedirectNode filename={[LIT_CHARS in1]} "> 1), > ) (Com {[VarSub SORT]} {[LIT_CHARS --]} {[LIT_CHARS -o]} {[LIT_CHARS in1]} {[LIT_CHARS -]} < (FilenameRedirectNode filename={[LIT_CHARS in]} 0), (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS in]} {[LIT_CHARS out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS C]} {[LIT_CHARS FAILED]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[LIT_CHARS in1]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS D]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 30]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "missing newline"]]}) (Com {[VarSub AWK]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS x]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[LIT_CHARS ./xsort]} {[DQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 31]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-M, multiple fields"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "jan 10 1900\n"][LIT_CHARS "Feb 26 1900\n"][LIT_CHARS "feb 25 1900\n"][LIT_CHARS "January xx 1900\n"][LIT_CHARS "August 11 1900\n"][LIT_CHARS "jan 15 1990\n"][LIT_CHARS "feb 22 1990\n"][LIT_CHARS "mar 15 1990\n"][LIT_CHARS "apr 1 1990\n"][LIT_CHARS "may 45 1990\n"][LIT_CHARS "jun 14 1990\n"][LIT_CHARS "jul 4 1990\n"][LIT_CHARS "aug 1~ 1990\n"][LIT_CHARS "aug 11 1990\n"][LIT_CHARS "sep 1 1990\n"][LIT_CHARS "oct 12 1990\n"][LIT_CHARS "nov 24 1990\n"][LIT_CHARS "dec 25 1990\n"][LIT_CHARS "never 3 1990\n"][LIT_CHARS " Dec 25 1990\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "January xx 1900\n"][LIT_CHARS "jan 10 1900\n"][LIT_CHARS "feb 25 1900\n"][LIT_CHARS "Feb 26 1900\n"][LIT_CHARS "August 11 1900\n"][LIT_CHARS "never 3 1990\n"][LIT_CHARS "jan 15 1990\n"][LIT_CHARS "feb 22 1990\n"][LIT_CHARS "mar 15 1990\n"][LIT_CHARS "apr 1 1990\n"][LIT_CHARS "may 45 1990\n"][LIT_CHARS "jun 14 1990\n"][LIT_CHARS "jul 4 1990\n"][LIT_CHARS "aug 1~ 1990\n"][LIT_CHARS "aug 11 1990\n"][LIT_CHARS "sep 1 1990\n"][LIT_CHARS "oct 12 1990\n"][LIT_CHARS "nov 24 1990\n"][LIT_CHARS " Dec 25 1990\n"][LIT_CHARS "dec 25 1990\n"]]} 0), > ) (Com {[VarSub M]} {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -k3n]} {[LIT_CHARS -k1M]} {[LIT_CHARS -k2n]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 32]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-M case insensitivity, -r"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "x\n"][LIT_CHARS "june\n"][LIT_CHARS "january\n"][LIT_CHARS "december\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "december\n"][LIT_CHARS "june\n"][LIT_CHARS "january\n"][LIT_CHARS "x\n"]]} 0), > ) (Com {[VarSub M]} {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -Mr]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 33]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-g, big enough for IEEE floating point"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "2\n"][LIT_CHARS "1\n"][LIT_CHARS "10\n"][LIT_CHARS "1e-1\n"][LIT_CHARS ".2\n"][LIT_CHARS "1e\n"][LIT_CHARS "1E1\n"][LIT_CHARS "1e.\n"][LIT_CHARS "3e+308\n"][LIT_CHARS "3e307\n"][LIT_CHARS "1e-308\n"][LIT_CHARS "1e-307\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "1e-308\n"][LIT_CHARS "1e-307\n"][LIT_CHARS "1e-1\n"][LIT_CHARS ".2\n"][LIT_CHARS "1\n"][LIT_CHARS "1e\n"][LIT_CHARS "1e.\n"][LIT_CHARS "2\n"][LIT_CHARS "10\n"][LIT_CHARS "1E1\n"][LIT_CHARS "3e307\n"][LIT_CHARS "3e+308\n"]]} 0), > ) (Com {[VarSub g]} {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -g]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 34]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-g wide operands"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS ".99999999999999999999\n"][LIT_CHARS "099999999999999999999e-21\n"][LIT_CHARS "099999999999999999999e-19\n"][LIT_CHARS ".1e1\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "099999999999999999999e-21\n"][LIT_CHARS ".99999999999999999999\n"][LIT_CHARS ".1e1\n"][LIT_CHARS "099999999999999999999e-19\n"]]} 0), > ) (Com {[VarSub g]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -g]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS ".1e1\n"][LIT_CHARS ".99999999999999999999\n"][LIT_CHARS "099999999999999999999e-19\n"][LIT_CHARS "099999999999999999999e-21\n"]]} 0), > ) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -n]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 35]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-g, -u with different fp reps"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "+0\n"][LIT_CHARS "-0\n"][LIT_CHARS "0\n"][LIT_CHARS "0.10\n"][LIT_CHARS "+.1\n"][LIT_CHARS "-.1\n"][LIT_CHARS "-100e-3x\n"][LIT_CHARS "x\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "-.1\n"][LIT_CHARS "-100e-3x\n"][LIT_CHARS "+0\n"][LIT_CHARS "-0\n"][LIT_CHARS "0\n"][LIT_CHARS "x\n"][LIT_CHARS "+.1\n"][LIT_CHARS "0.10\n"]]} 0), > ) (Com {[VarSub g]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -g]}) (AndOr OP_AND_IF (Com {[VarSub g]} {[VarSub SORT]} {[LIT_CHARS -gu]} {[LIT_CHARS in]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub g]} {[VarSub SORT]} {[LIT_CHARS -c]} {[LIT_CHARS -gu]} {[LIT_CHARS xx]}) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) ) (Com {[VarSub g]} {[LIT_CHARS ./linecount]} {[LIT_CHARS C]} {[LIT_CHARS xx]} {[LIT_CHARS 3]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 36]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS -s]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a 2\n"][LIT_CHARS "b 1\n"][LIT_CHARS "c 2\n"][LIT_CHARS "a 1\n"][LIT_CHARS "b 2\n"][LIT_CHARS "c 1\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a 2\n"][LIT_CHARS "a 1\n"][LIT_CHARS "b 1\n"][LIT_CHARS "b 2\n"][LIT_CHARS "c 2\n"][LIT_CHARS "c 1\n"]]} 0), > ) (Com {[VarSub s]} {[LIT_CHARS ./xsort]} {[DQ ]} {[LIT_CHARS -s]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 37]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "-s, multiple files"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a 2\n"][LIT_CHARS "c 2\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in1]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a 1\n"][LIT_CHARS "b 1\n"][LIT_CHARS "c 1\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "a 2\n"][LIT_CHARS "b 1\n"][LIT_CHARS "c 2\n"]]} 0), > ) (Com {[VarSub s]} {[VarSub SORT]} {[LIT_CHARS -su]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in1]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub s]} {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS xx]} {[LIT_CHARS out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS A]} {[LIT_CHARS FAILED]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "c 1\n"][LIT_CHARS "b 1\n"][LIT_CHARS "a 1\n"]]} 0), > ) (Com {[VarSub s]} {[VarSub SORT]} {[LIT_CHARS -sru]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1]} {[LIT_CHARS in]} {[LIT_CHARS in]} {[LIT_CHARS in1]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS xx]} "> 1), > ) (AndOr OP_OR_IF (Com {[VarSub s]} {[LIT_CHARS cmp]} {[LIT_CHARS -s]} {[LIT_CHARS xx]} {[LIT_CHARS out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub TEST] [LIT_CHARS B]} {[LIT_CHARS FAILED]}) ) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 38]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS -s]]}) (Com {[VarSub s]} {[VarSub AWK]} {[SQ \"in\"\n"> \"in1\"\n"> ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), > ) (Com {[VarSub s]} {[VarSub SORT]} {[LIT_CHARS -m]} {[LIT_CHARS -s]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1n]} {[LIT_CHARS in]} {[LIT_CHARS in1]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[VarSub s]} {[VarSub AWK]} {[SQ ] [VarSub TEST] [SQ ]} {[LIT_CHARS out]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 39]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "empty fields"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "bXXa\n"][LIT_CHARS "aXXb\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -k3]} {[LIT_CHARS -tX]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -k2]} {[LIT_CHARS -tX]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -r]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2]} {[LIT_CHARS -tX]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS D]} {[LIT_CHARS -r]} {[LIT_CHARS -k4]} {[LIT_CHARS -tX]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 40]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "deceptive field boundaries"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " 1.2\n"][LIT_CHARS " 1.10\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -t.]} {[LIT_CHARS -k1] [LIT_COMMA ","] [LIT_CHARS 1n]} {[LIT_CHARS -k2] [LIT_COMMA ","] [LIT_CHARS 2n]}) (Com {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -t.]} {[LIT_CHARS -k1nr]} {[LIT_CHARS -k2n]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS " feb\n"][LIT_CHARS " jan\n"][LIT_CHARS " jan\n"][LIT_CHARS "feb\n"]]} 0), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS in]} {[LIT_CHARS out]}) (Com {[VarSub M]} {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -k1.1] [LIT_COMMA ","] [LIT_CHARS 1.4M]}) (= scope= flags=0 words=[] bindings=[('TEST', {[LIT_CHARS 41]})]) (Com {[LIT_CHARS echo]} {[VarSub TEST]} {[DQ [LIT_CHARS "fixed length records"]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS bdpoweonwekjbkgizohoeioilasho]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS hozopoonbkkjoieigishwewebdlao]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS A]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R2]} {[LIT_CHARS -k.2.1]}) (Subshell (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]}) ) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), (HereDocRedirectNode here_end='!' do_expansion=True body_word={[DQ [LIT_CHARS "zoweweshpoonoio\n"][LIT_CHARS "lakjhogieibkbd\n"][LIT_CHARS "\n"]]} 0), > ) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS B]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R2]}) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS in]} "> 1), > ) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS C]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R4]} {[LIT_CHARS -k.2.1]}) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS D]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R4]} {[LIT_CHARS -k1.2] [LIT_COMMA ","] [LIT_CHARS 1.2]}) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS E]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R4]} {[LIT_CHARS -k.2.2]}) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS F]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R4]} {[LIT_CHARS -k1.2] [LIT_COMMA ","] [LIT_CHARS 1.3]}) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS G]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R4]} {[LIT_CHARS -k1.2] [LIT_COMMA ","] [LIT_CHARS 1.2]} {[LIT_CHARS -k1.3] [LIT_COMMA ","] [LIT_CHARS 1.3]}) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS out]} "> 1), > ) (Com {[VarSub k]} {[LIT_CHARS ./xsort]} {[LIT_CHARS H]} {[LIT_CHARS -s]} {[LIT_CHARS -r]} {[LIT_CHARS -R4]} {[LIT_CHARS -k1.3] [LIT_COMMA ","] [LIT_CHARS 1.3]} {[LIT_CHARS -k1.2] [LIT_COMMA ","] [LIT_CHARS 1.2]}) ) ) )