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