CLI Now Allows Individual Line Processing
The PHP 5 command-line version now allows individual line processing, similar to Perl and awk.
Use these flags on the command line to alter PHP’s behavior:
-
-B Run this code before processing the file. This is similar to
auto_prepend_file.-
-R Run this code on each line of the file.
-
-E Run this code at the end of processing the file. This is similar to
auto_append_file.
The contents of the current line are
available in $argn. This simple example prints
each line of example.txt:
$ php -R 'print "$argn\n" ;' < example.txt12345
The current line number is stored in
$argi. The first line of the file is line 1 (not
0). So, to print out select lines of a file, do this:
$ php -B '$start = 2; $stop = 4;' -R 'if ($argi >= $start && $argi <= $stop) print "$argn\n";' < example.txt234
Modifying standard input disrupts the flow. For instance:
$ php -R 'print fgets(STDIN);' < example.txt24
Using the -R flag causes PHP to read in one line
from standard input. Therefore, when you call fgets( ), you read in a second line. This
results in “missing” lines because
both PHP and you are processing the file.