RE: scrpt help neded...

2011-07-21 Thread Murray Taylor
-Original Message-
From: owner-freebsd-questi...@freebsd.org
[mailto:owner-freebsd-questi...@freebsd.org] On Behalf Of
per...@pluto.rain.com
Sent: Thursday, 21 July 2011 10:08 PM
To: kl...@thought.org
Cc: freebsd-questions@freebsd.org
Subject: Re: scrpt help neded...

Gary Kline kl...@thought.org wrote:

 I'm looking for a script that takes on arg and lets   me vi/vim
 into the r esults.  Let's say that I'm looking for the string
 201107 in a slew of files.  the script find it with grep---not
 grep -w, just grep.  collect es the filenames and lines (grep -n)
 and saves  then temporarily, then points vim or vi at each
 file+linenumbr and execs it for me.   the fewer keystrokes, the
 better.

To edit each file that contains 201107:

  $ vi ` grep -l 201107 {files to be searched} `

That won't pre-position within the files, but since it's a single
invocation of vi, with each subsequent file being loaded by :n, a
search pattern will persist (unless/until you replace it by entering
a different search pattern).  At the top of the first file, you enter

  /201107

to find the first instance, n to find the second, etc.  After :n
-- at the top of the second file -- n alone will find the first
instance.

OTOH if you want to bring up an xterm containing _the results of
the grep_ you can pipe it into the attached script.  There is no
manpage, but the comments and the (straightforward) parameter
decoding should provide a start.  (There are a few magic numbers,
which ideally should be tweaked for your X11 installation's font
dimensions, but nothing horrible will happen if they are slightly
off.)

-

get your grep script to return the line number of the item to be changed
and 
then use vi -clinenumber filename  this is preposition you on the
line
containing the grepped target.
 


-- 
Murray Taylor
Bytecraft Systems
Special Projects Engineer

 |_|0|_|Absence of evidence
 |_|_|0|is not evidence of absence
 |0|0|0|Carl Sagan



 
---
The information transmitted in this e-mail is for the exclusive
use of the intended addressee and may contain confidential
and/or privileged material. Any review, re-transmission,
dissemination or other use of it, or the taking of any action
in reliance upon this information by persons and/or entities
other than the intended recipient is prohibited. If you
received this in error, please inform the sender and/or
addressee immediately and delete the material. 

E-mails may not be secure, may contain computer viruses and
may be corrupted in transmission. Please carefully check this
e-mail (and any attachment) accordingly. No warranties are
given and no liability is accepted for any loss or damage
caused by such matters.
---

### This e-mail message has been scanned for Viruses by Bytecraft ###
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org


scrpt help neded...

2011-07-20 Thread Gary Kline

Y'all,

Not sure where it was the calendar or something else that suddenly
made my tying go South.  maybe both.  --oh, yes, i still need to
buy a new clicky kybd.   but that won't help with the script i
need.

back hen i worked from cray reseach in WI, a shell /bin/sh wizard cooked
up what i wanted in minutes.  i have lost in in the 20+ years so
maybe some shell or perl guru can help me.  

I'm looking for a script that takes on arg and lets   me vi/vim into
the r esults.  Let's say that I'm looking for the string 201107 in
a slew of files.  the script find it with grep---not grep -w, just
grep.  collect es the filenames and lines (grep -n) and saves  then
temporarily, then points vim or vi at each file+linenumbr and execs
it for me.   the fewer keystrokes, the better.

can anybody help me?

tia,

gary


-- 
 Gary Kline  kl...@thought.org  http://www.thought.org  Public Service Unix
   Journey Toward the Dawn, E-Book: http://www.thought.org
  The 8.51a release of Jottings: http://jottings.thought.org

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org


Re: scrpt help neded...

2011-07-20 Thread perryh
Gary Kline kl...@thought.org wrote:

 I'm looking for a script that takes on arg and lets   me vi/vim
 into the r esults.  Let's say that I'm looking for the string
 201107 in a slew of files.  the script find it with grep---not
 grep -w, just grep.  collect es the filenames and lines (grep -n)
 and saves  then temporarily, then points vim or vi at each
 file+linenumbr and execs it for me.   the fewer keystrokes, the
 better.

To edit each file that contains 201107:

  $ vi ` grep -l 201107 {files to be searched} `

That won't pre-position within the files, but since it's a single
invocation of vi, with each subsequent file being loaded by :n, a
search pattern will persist (unless/until you replace it by entering
a different search pattern).  At the top of the first file, you enter

  /201107

to find the first instance, n to find the second, etc.  After :n
-- at the top of the second file -- n alone will find the first
instance.

OTOH if you want to bring up an xterm containing _the results of
the grep_ you can pipe it into the attached script.  There is no
manpage, but the comments and the (straightforward) parameter
decoding should provide a start.  (There are a few magic numbers,
which ideally should be tweaked for your X11 installation's font
dimensions, but nothing horrible will happen if they are slightly
off.)
#!/usr/local/bin/bash

# The maxl and maxw calculations involve magic numbers, which ideally
# ought to be extracted from xterm and window-manager settings rather
# than being hard-coded.  Good luck figuring out a way to do that.
#
#   The xterm font is 6w x 13h
#
#   visible title bar height incl top frame = 29 pixels
#   + xterm margin inside frame = 1 pixel
#   + bottom frame  margin = 8 pixels (same as frame widths below)
#   + window-manager shadow = 1 pixel
#   = height available for text = screen height - 39 pixels
#
maxl=`(xwininfo -root | sed -n -e 's/  Height: //p' ; echo 39 - 13 / p) | dc`
#
#   visible frame width = 7 pixels
#   + xterm margin inside frame = 1 pixel
#   * 2 sides = total width of side frames = 16 pixels
#   + window-manager shadow = 1 pixel
#   = width available for text = screen width - 17 pixels
#
maxw=`(xwininfo -root | sed -n -e 's/  Width: //p' ; echo 17 - 6 / p) | dc`

# maxw should be used in conjunction with the max line length found in the
# file to automatically set the width (as is already being done for the length).

# Set defaults
w=80
l=0
n=stdin
flags=
n_is_default=1
w_is_default=1

# Handle flag params
while [[ $1 == -?* ]] ; do
   case $1 in
  -w  )
shift
w=$1
w_is_default=0
;;
  -w* )
w=${1#-w}
w_is_default=0
;;
  -l  )
shift
l=$1
;;
  -l* )
l=${1#-l}
;;
  -n  )
shift
n=$1
n_is_default=0
;;
  -n* )
n=${1#-n}
n_is_default=0
;;
  *   )
flags=$flags $1
   esac
   shift
done

# Check for no params = stdin, or 1st param of - (explicit stdin), and
# if so copy stdin to a file since there seems no way to get it passed to
# the less which will be running in the xterm.  Note that - will not
# work as any but the first non-flag parameter.
if [ x$1 == x -o $1 == - ] ; then
   cat  /tmp/xless$$
   shift
   if [ $l == 0 ] ; then
  l=`(head -$maxl /tmp/xless$$ | fold -w$w | wc -l ; echo \1 + d [$maxl p 
q] sa $maxl a p q\) | dc`
   fi
   xterm -geometry ${w}x$l +sb -sl 0 -title $n - `pwd` -n $n $flags -e sh 
-c less /tmp/xless$$ $* ; rm /tmp/xless$$ 
else
   [ $n_is_default == 1 ]  n=`basename $1`
   if [[ $w_is_default == 1  $1 == *.w=* ]] ; then
  w=`echo $1 | sed -e 's/^.*\.w=//'`
  [ $n_is_default == 1 ]  n=`echo $n | sed -e 's/\.w=.*$//'`
   fi
   if [ $l == 0 ] ; then
  l=`(head -$maxl $1 | fold -w$w | wc -l ; echo \1 + d [$maxl p q] sa 
$maxl a p q\) | dc`
   fi
   xterm -geometry ${w}x$l +sb -sl 0 -title $1 - `pwd` -n $n $flags -e 
less $* 
fi
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org