Copy stdin to stdout: Difference between revisions
(→{{Header|Perl}}: Mercury) |
(→{{Header|sed}}: added zkl) |
||
Line 133: | Line 133: | ||
sed -e '' |
sed -e '' |
||
</lang> |
</lang> |
||
=={{header|zkl}}== |
|||
<lang zkl>zkl --eval "File.stdout.write(File.stdin.read())"</lang> |
Revision as of 05:24, 12 November 2018
Create an executable file that copies stdin to stdout, or else a script that does so through the invocation of an interpreter at the command line.
ALGOL 68
<lang algol68>BEGIN
BOOL at eof := FALSE; # set the EOF handler for stand in to a procedure that sets "at eof" to true # # and returns true so processing can continue # on logical file end( stand in, ( REF FILE f )BOOL: at eof := TRUE ); # copy stand in to stand out # WHILE STRING line; read( ( line, newline ) ); NOT at eof DO write( ( line, newline ) ) OD
END</lang>
AWK
Using the awk interpreter, the following command uses the pattern // (which matches anything) with the default action (which is to print the current line) and so copy lines from stdin to stdut. <lang AWK>awk "//"</lang>
C
<lang C>
- include <stdio.h>
int main(){
char c; while ( (c=getchar()) != EOF ){ putchar(c); } return 0;
} </lang>
Go
<lang go>package main
import (
"bufio" "io" "os"
)
func main() {
r := bufio.NewReader(os.Stdin) w := bufio.NewWriter(os.Stdout) for { b, err := r.ReadByte() if err == io.EOF { return } w.WriteByte(b) w.Flush() }
}</lang>
Mercury
<lang Mercury>
- - module stdin_to_stdout.
- - interface.
- - import_module io.
- - pred main(io::di, io::uo) is det.
%-----------------------------------------------------------------------------% %-----------------------------------------------------------------------------%
- - implementation.
- - import_module char.
- - import_module list.
- - import_module string.
%-----------------------------------------------------------------------------%
main(!IO) :-
io.read_line_as_string(Result, !IO), ( Result = ok(Line), io.write_string(Line, !IO), main(!IO) ; Result = eof ; Result = error(Error), io.error_message(Error, Message), io.input_stream_name(StreamName, !IO), io.progname("stdin_to_stdout", ProgName, !IO), io.write_strings([ ProgName, ": ", "error reading from `", StreamName, "': \n\t", Message, "\n" ], !IO) ).
%-----------------------------------------------------------------------------% </lang>
Perl
<lang perl> perl -pe </lang>
Perl 6
When invoked at a command line: Slightly less magical than Perl / sed. The p flag means automatically print each line of output to STDOUT. The e flag means execute what follows inside quotes. ".lines" reads lines from the assigned pipe (file handle), STDIN by default.
<lang perl6>perl6 -pe'.lines'</lang>
When invoked from a file: Lines are auto-chomped, so need to re-add newlines (hence .say rather than .print) <lang perl6>.say for lines</lang>
Prolog
<lang Prolog> %File: stdin_to_stdout.pl
- - initialization(main).
main :- repeat, get_char(X), put_char(X), X == end_of_file, fail. </lang>
Invocation at the command line (with Swi-prolog): <lang sh> swipl stdin_to_stdout.pl </lang>
sed
<lang sh> sed -e </lang>
zkl
<lang zkl>zkl --eval "File.stdout.write(File.stdin.read())"</lang>