github.com/benhoyt/goawk@v1.8.1/testdata/T.getline (about)

     1  echo T.getline: test getline function
     2  
     3  awk=${awk-../a.out}
     4  
     5  who >foo1
     6  cat foo1 | $awk '
     7  BEGIN {
     8  	while (getline)
     9  		print
    10  	exit
    11  }
    12  ' >foo
    13  cmp -s foo1 foo || echo 'BAD: T.getline (bare getline)'
    14  
    15  who >foo1
    16  cat foo1 | $awk '
    17  BEGIN {
    18  	while (getline xxx)
    19  		print xxx
    20  	exit
    21  }
    22  ' >foo
    23  cmp -s foo1 foo || echo 'BAD: T.getline (getline xxx)'
    24  
    25  $awk '
    26  BEGIN {
    27  	while (getline <"/etc/passwd")
    28  		print
    29  	exit
    30  }
    31  ' >foo
    32  cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <file)'
    33  
    34  cat /etc/passwd | $awk '
    35  BEGIN {
    36  	while (getline <"-")	# stdin
    37  		print
    38  	exit
    39  }
    40  ' >foo
    41  cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <"-")'
    42  
    43  $awk '
    44  BEGIN {
    45  	while (getline <ARGV[1])
    46  		print
    47  	exit
    48  }
    49  ' /etc/passwd >foo
    50  cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <arg)'
    51  
    52  $awk '
    53  BEGIN {
    54  	while (getline x <ARGV[1])
    55  		print x
    56  	exit
    57  }
    58  ' /etc/passwd >foo
    59  cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline x <arg)'
    60  
    61  $awk '
    62  BEGIN {
    63  	while (("cat " ARGV[1]) | getline)
    64  		print
    65  	exit
    66  }
    67  ' /etc/passwd >foo
    68  cmp -s /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline)'
    69  
    70  $awk '
    71  BEGIN {
    72  	while (("cat " ARGV[1]) | getline x)
    73  		print x
    74  	exit
    75  }
    76  ' /etc/passwd >foo
    77  cmp -s /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline x)'
    78  
    79  $awk ' BEGIN { print getline <"/glop/glop/glop" } ' >foo
    80  echo '-1' >foo1
    81  cmp -s foo foo1 || echo 'BAD: T.getline (non-existent file)'
    82  
    83  echo 'false false equal' >foo1
    84  $awk 'BEGIN {
    85  	"echo 0" | getline
    86  	if ($0) printf "true " 
    87  	else printf "false "
    88  	if ($1) printf "true " 
    89  	else printf "false "
    90  	if ($0==$1) printf "equal\n"
    91  	else printf "not equal\n"
    92  }' >foo2
    93  cmp -s foo1 foo2 || echo 1>&2 'BAD: T.getline bad $0 type in cmd|getline'
    94  
    95  echo 'L1
    96  L2' | $awk 'BEGIN { $0="old stuff"; $1="new"; getline x; print}' >foo1
    97  echo 'new stuff' >foo2
    98  cmp -s foo1 foo2 || echo 1>&2 'BAD: T.getline bad update $0'