📄 stests
字号:
linecount C xx 2#---------------------------------------------------------------TEST=19; echo $TEST # -i, -d, -fcat <<! >xx.crun(i,j){ for( ; i<=j; i++) printf("%.3o %c\n",i,i); }main(){ run(0, 011); /* 012=='\n' */ run(013, 0377); }!cc xx.ca.out >incat <<! >xx.crun(i,j){ for( ; i<=j; i++) printf("%.3o %c\n",i,i); }main(){ run(0, 011); run(013, ' '-1); run(0177, 0377); run(' ', 0176); }!cc xx.ca.out >outxsort A -i -k 2cat <<! >xx.crun(i,j){ for( ; i<=j; i++) printf("%.3o %c\n",i,i); }main(){ run(0, 010); /* 011=='\t', 012=='\n' */ run(013, ' '-1); run(' '+1, '0'-1); run('9'+1, 'A'-1); run('Z'+1, 'a'-1); run('z'+1, 0377); run('\t', '\t'); run(' ', ' '); run('0', '9'); run('A', 'Z'); run('a', 'z'); }!cc xx.ca.out >outxsort B -d -k 2cat <<! >xx.crun(i,j){ for( ; i<=j; i++) printf("%.3o %c\n",i,i); }main(){ int i; run(0, 011); run(013, 'A'-1); for(i='A'; i<='Z'; i++) printf("%.3o %c\n%.3o %c\n",i,i,i+040,i+040); run('Z'+1, 'a'-1); run('z'+1, 0377); }!cc xx.ca.out >outrm xx.cxsort C -f -k 2#---------------------------------------------------------------TEST=20; echo $TEST # -d, -f, -b applies only to fieldscat <<! >in b'Ca!cp in outxsort A -dxsort B -fcat <<! >out ba'C!xsort C -dfb#---------------------------------------------------------------TEST=21; echo $TEST # behavior of null bytescat <<'!' >xx.cmain() { printf("%cb\n%ca\n",0,0); }!cc xx.ca.out >insort in >xxcmp in xx >/dev/null && echo ${TEST}A failedtest "`wc -c <in`" = "`wc -c <xx`" || echo ${TEST}B failedrm xx.c a.out#---------------------------------------------------------------TEST=22; echo $TEST # field limitscat <<! >ina 2a 1b 2b 1!cat <<! >outb 1b 2a 1a 2!xsort "" -r -k1,1 -k2n#---------------------------------------------------------------TEST=23; echo $TEST # empty filesort -o xx </dev/nullcmp xx /dev/null 2>/dev/null || echo ${TEST}A failedsort -c </dev/null || echo ${TEST}B failedsort -cu </dev/null || echo ${TEST}C failed#---------------------------------------------------------------TEST=24; echo $TEST # many fieldscat <<! >in0:2:3:4:5:6:7:8:91:1:3:4:5:6:7:8:91:2:2:4:5:6:7:8:91:2:3:3:5:6:7:8:91:2:3:4:4:6:7:8:91:2:3:4:5:5:7:8:91:2:3:4:5:6:6:8:91:2:3:4:5:6:7:7:91:2:3:4:5:6:7:8:8!cat <<! >out1:2:3:4:5:6:7:8:81:2:3:4:5:6:7:7:91:2:3:4:5:6:6:8:91:2:3:4:5:5:7:8:91:2:3:4:4:6:7:8:91:2:3:3:5:6:7:8:91:2:2:4:5:6:7:8:91:1:3:4:5:6:7:8:90:2:3:4:5:6:7:8:9!xsort "" -t: -k9 -k8 -k7 -k6 -k5 -k4 -k3 -k2 -k1#---------------------------------------------------------------TEST=25; echo $TEST # variously specified alpha fields # numbers give the correct orderingscat <<! >in01:04:19:01:16:01:21:01 a02:03:13:15:13:19:15:02 a03:02:07:09:07:13:09:03 a04:01:01:03:01:07:03:04 a05:08:20:16:17:02:20:05 aa06:07:14:18:14:20:14:06 aa07:06:08:10:08:14:08:07 aa08:05:02:04:02:08:02:08 aa09:16:22:02:22:04:24:13 b10:15:16:20:19:22:18:14 b11:14:10:12:10:16:12:15 b12:13:04:06:04:10:06:16 b13:24:24:22:24:06:22:21 bb14:23:18:24:21:24:16:22 bb15:22:12:14:12:18:10:23 bb16:21:06:08:06:12:04:24 bb17:12:21:21:18:03:19:09 ab18:11:15:19:15:21:13:10 ab19:10:09:11:09:15:07:11 ab20:09:03:05:03:09:01:12 ab21:20:23:17:23:05:23:17 ba22:19:17:23:20:23:17:18 ba23:18:11:13:11:17:11:19 ba24:17:05:07:05:11:05:20 ba!sort -k2b -k2 in >xx && sort -c -t: -k2n xx 2>/dev/null || echo ${TEST}A failedsort -k2,2.1b -k2 in >xx && sort -c -t: -k3n xx 2>/dev/null || echo ${TEST}B failedsort -k2.3 -k2 in >xx && sort -c -t: -k4n xx 2>/dev/null || echo ${TEST}C failedsort -k2b,2.3 -k2 in >xx && sort -c -t: -k5n xx 2>/dev/null || echo ${TEST}D failedsort -k2.3,2.1b -k2 in >xx && sort -c -t: -k6n xx 2>/dev/null || echo ${TEST}E failedsort -k2,2.1b -k2r in >xx && sort -c -t: -k7n xx 2>/dev/null || echo ${TEST}F failedsort -b -k2,2 -k2 in >xx && sort -c -t: -k8n xx 2>/dev/null || echo ${TEST}G failedsort -b -k2,2b -k2 in >xx && # perhaps same as G sort -c -t: -k3n xx 2>/dev/null || echo ${TEST}H failed\ "(standard is not clear on this)"#---------------------------------------------------------------TEST=26; echo $TEST # empty fields, out of bounds fields cat <<! >in0 51 42 33 24 15 0!cp in outxsort "" -k2.2,2.1 -k2.3,2.4#---------------------------------------------------------------TEST=27; echo $TEST # displaced -orm -f out$o sort /dev/null -o out || $o echo ${TEST}B failed$o test -f out || $o echo ${TEST}C failed#---------------------------------------------------------------TEST=28; echo $TEST # apparently nonmonotone field specscat <<! >inaaaa cx a0 b!cp in out$o xsort A +1 -0.3 +1.4 -1.5xsort B -k2,1.3 -k2.5,2.5#---------------------------------------------------------------TEST=29; echo $TEST # determination of end of option listcat >-k <<!x!rm -f out -csort -- -k </dev/null >xx || echo ${TEST}A argument failedcmp xx -k || echo ${TEST}A comparison failedsort - -c </dev/null 2>/dev/null && echo ${TEST}B failed#---------------------------------------------------------------TEST=30; echo $TEST # missing newlineawk 'BEGIN{ printf "%s", "x"}' | sort >xxwc -c <xx | awk '$1!=2{ print "'${TEST}' failed" }'#---------------------------------------------------------------TEST=31; echo $TEST # -M, multiple fieldscat <<! >injan 10 1900Feb 26 1900feb 25 1900January xx 1900August 11 1900jan 15 1990feb 22 1990mar 15 1990apr 1 1990may 45 1990jun 14 1990jul 4 1990aug 1~ 1990aug 11 1990sep 1 1990oct 12 1990nov 24 1990dec 25 1990never 3 1990 Dec 25 1990!cat <<! >outJanuary xx 1900jan 10 1900feb 25 1900Feb 26 1900August 11 1900never 3 1990jan 15 1990feb 22 1990mar 15 1990apr 1 1990may 45 1990jun 14 1990jul 4 1990aug 1~ 1990aug 11 1990sep 1 1990oct 12 1990nov 24 1990 Dec 25 1990dec 25 1990!$M xsort "" -k3n -k1M -k2n#---------------------------------------------------------------TEST=32; echo $TEST # -M case insensitivity, -rcat <<! >inxjunejanuarydecember!cat <<! >outdecemberjunejanuaryx!$M xsort "" -Mr#---------------------------------------------------------------TEST=33; echo $TEST # -gcat <<! >in2110.21e1E11e.!cat <<! >out.211e1e.2101E1!$g xsort "" -g#---------------------------------------------------------------TEST=34; echo $TEST # -g wide operandscat <<! >in.99999999999999999999099999999999999999999e-21099999999999999999999e-19.1e1!cat <<! >out099999999999999999999e-21.99999999999999999999.1e1099999999999999999999e-19!$g xsort A -gcat <<! >out.1e1.99999999999999999999099999999999999999999e-19099999999999999999999e-21!xsort B -n#---------------------------------------------------------------TEST=35; echo $TEST #-g, -u with different fp repscat <<! >in+0-00.10+.1-.1-100e-3x!cat <<! >out-.1-100e-3+0-0x+.10.10!$g xsort A -g$g sort -gu in >xx && $g sort -c -gu xx || echo ${TEST}B failed$g linecount C xx 3#---------------------------------------------------------------TEST=36; echo $TEST # -scat <<! >ina 2b 1c 2a 1b 2c 1!cat <<! >outa 2a 1b 1b 2c 2c 1!$s xsort "" -s -k1,1#---------------------------------------------------------------TEST=37; echo $TEST # -s, multiple filescat <<! >ina 2c 2!cat <<! >in1a 1b 1c 1!cat <<! >outc 2b 1a 2!$s sort -smru -k1,1 in in in1 in1 >xx$s cmp xx out >/dev/null || echo $TEST failed#---------------------------------------------------------------TEST=38; echo $TEST # -s$s awk ' BEGIN { for(i=1; i<50; i++) for(j=1; j<=i; j++) { print i, 2 >"in" print i, 1 >"in1" } }'$s sort -m -s -k1,1n in in1 >out$s awk ' func stop() { print "'$TEST' failed"; exit } $1!=last1 { if(count!=last1 || $2!=2) stop(); count = 0} $1==last1 && $2!=last2 { if(count!=last1 || $2!=1) stop(); count = 0 } { count++; last1 = $1; last2 = $2 } ' out
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -