add ssam
This commit is contained in:
parent
98d01a7719
commit
da81fd83ce
2 changed files with 113 additions and 0 deletions
41
rc/bin/ssam
Executable file
41
rc/bin/ssam
Executable file
|
@ -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
|
72
sys/man/1/ssam
Normal file
72
sys/man/1/ssam
Normal file
|
@ -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.
|
Loading…
Reference in a new issue