diff --git a/rc/bin/ssam b/rc/bin/ssam new file mode 100755 index 000000000..917a34f71 --- /dev/null +++ b/rc/bin/ssam @@ -0,0 +1,41 @@ +#!/bin/rc +# ssam - stream interface to sam + +flagfmt='n,e script,f sfile' +args='[ file ... ]' +if(! ifs=() eval `{aux/getflags $*}){ + usage + exit usage +} + +if(~ $#flage 0 && ~ $#flagf 0) { + if(~ $#* 0) { + usage + exit usage + } + flage=$1 + shift +} + +if(~ $#TMPDIR 0) + TMPDIR=/tmp +tmp=$TMPDIR/ssam.tmp.$user.$pid +cat $* >$tmp + +{ + # select entire file + echo ',{' + echo k + echo '}' + echo 0k + + # run scripts, print + if(! ~ $#flagf 0) + cat $flagf + if(! ~ $#flage 0) + echo $flage + if(~ $#flagn 0) + echo , +} | sam -d $tmp >[2]/dev/null + +rm -f $tmp diff --git a/sys/man/1/ssam b/sys/man/1/ssam new file mode 100644 index 000000000..6dbdc2364 --- /dev/null +++ b/sys/man/1/ssam @@ -0,0 +1,72 @@ +.TH SSAM 1 +.SH NAME +ssam \- stream interface to sam +.SH SYNOPSIS +.B ssam +[ +.B -n +] +[ +.B -e +.I script +] +[ +.B -f +.I sfile +] +[ +.I file ... +] +.SH DESCRIPTION +.I Ssam +copies the named +.I files +(standard input default) to the standard output, edited by a script of +.IR sam +commands (q.v.). +When the script starts, the entire input is selected. +The +.B -f +option causes the script to be taken from file +.IR sfile . +If there is a +.B -e +option and no +.BR -f , +the flag +.B -e +may be omitted. +The +.B -n +option suppresses the default output. +.ne 4 +.SH EXAMPLES +.TP +.B ssam -n ,10p file +Print first 10 lines of file. +.TP +.B ssam 'y/[a-zA-Z]+/ c/\en/' *.ms +Print one word per line. +.TP +.B ssam 's/\en\en+/\en/g' +Delete empty lines from standard input. +.TP +.B ssam 's/UNIX/& system/g' +Replace every instance of +.L UNIX +by +.LR "UNIX system" . +.TP +.B ssam 'y/[a-zA-Z]+/ c/\en/' | grep . | sort | uniq -c +Count frequency of words read from standard input. +.SH SOURCE +.B \*9/bin/ssam +.SH SEE ALSO +.IR sed (1), +.IR sam (1), +.IR regexp (7) +.PP +Rob Pike, +``The text editor sam''. +.SH BUGS +Ssam consumes all of standard input before running the script.