github.com/benhoyt/goawk@v1.8.1/testdata/T.split (about) 1 echo T.split: misc tests of field splitting and split command 2 3 awk=${awk-../a.out} 4 5 echo a:bc:def >foo0 6 echo a >foo1 7 $awk '{ FS = ":"; print $1 }' foo0 >foo2 8 diff foo1 foo2 || echo 'BAD: T.split 0.1' 9 10 echo a:bc:def >foo0 11 echo 3 >foo1 12 $awk '{ FS = ":"; print NF }' foo0 >foo2 13 diff foo1 foo2 || echo 'BAD: T.split 0.2' 14 15 echo ' 16 a 17 a:b 18 c:d:e 19 e:f:g:h' >foo0 20 $awk 'BEGIN { 21 FS = ":" 22 while (getline <"foo0" > 0) 23 print NF 24 }' >foo1 25 echo '0 26 1 27 2 28 3 29 4' >foo2 30 diff foo1 foo2 || echo 'BAD: T.split 0.3' 31 32 echo 'abc 33 de 34 f 35 36 ' >foo0 37 who | sed 10q >> foo0 38 sed 10q /etc/passwd >> foo0 39 40 $awk ' 41 { n = split($0, x, "") 42 m = length($0) 43 if (m != n) print "error 1", NR 44 s = "" 45 for (i = 1; i <= m; i++) 46 s = s x[i] 47 if (s != $0) print "error 2", NR 48 print s 49 }' foo0 >foo1 50 51 diff foo0 foo1 || echo 'BAD: T.split 1' 52 53 # assumes same foo0! bad design 54 55 56 $awk ' 57 { n = split($0, x, //) 58 m = length($0) 59 if (m != n) print "error 1", NR 60 s = "" 61 for (i = 1; i <= m; i++) 62 s = s x[i] 63 if (s != $0) print "error 2", NR 64 print s 65 }' foo0 >foo1 66 67 diff foo0 foo1 || echo 'BAD: T.split //' 68 69 $awk ' 70 BEGIN { FS = "" } 71 { n = split($0, x) # will be split with FS 72 m = length($0) 73 if (m != n) print "error 1", NR 74 s = "" 75 for (i = 1; i <= m; i++) 76 s = s x[i] 77 if (s != $0) print "error 2", NR 78 print s 79 }' foo0 >foo2 80 81 diff foo0 foo2 || echo 'BAD: T.split 2' 82 83 # assumes same foo0! 84 85 $awk ' 86 BEGIN { FS = "" } 87 { n = NF 88 m = length($0) 89 if (m != n) print "error 1", NR 90 s = "" 91 for (i = 1; i <= m; i++) 92 s = s $i 93 if (s != $0) print "error 2", NR 94 print s 95 }' foo0 >foo3 96 97 diff foo0 foo3 || echo 'BAD: T.split 3' 98 99 100 $awk ' 101 { n = split( $0, temp, /^@@@ +/ ) 102 print n 103 }' >foo1 <<XXX 104 @@@ xxx 105 @@@ xxx 106 @@@ xxx 107 XXX 108 echo '2 109 2 110 2' >foo2 111 diff foo1 foo2 || echo 'BAD: T.split 4' 112 113 rm foo* 114 115 echo ' 116 a 117 bc 118 def' >foo0 119 $awk ' 120 { print split($0, x, "") 121 }' foo0 >foo1 122 echo '0 123 1 124 2 125 3' >foo2 126 diff foo1 foo2 || echo 'BAD: T.split null 3rd arg' 127 128 rm foo* 129 $awk 'BEGIN { 130 a[1]="a b" 131 print split(a[1],a),a[1],a[2] 132 }' >foo1 133 134 echo '2 a b' >foo2 135 diff foo1 foo2 || echo 'BAD: T.split(a[1],a)' 136