[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SED help........



on Fri, Apr 23, 2004 at 11:39:32AM -0400, Ralph Crongeyer (ralph@crongeyer.com) wrote:
> Hi all,
> 
> I need some help with SED. I'm trying  to insert a "command"/text at the 
> beginning of every line from one file and output to a new file like this:
> 
> sed 's/.*/clamscan -ri -l /var/log/clamav/clamav-"$1".log 
> --move=/var/log/clamav/quarantine &/ /var/log/clamav/diff/diff.txt > 
> /var/log/clamav/virus_scan

Showing a sample of the lines you're trying to change would be useful.
It's hard to tell just from your (broken) regex substitution.

> but sed givs me this error:
> sed: -e expression #1, char 23: Unknown option to 's'

A few things.

  - ".*" matches the whole line.  Is this what you're trying to change?
    If you just want to match start of line, use '^' instead.

  - "/" is the default sed argument delimiter.  If you're using "/"
    within your regex *OR* substitution, you must escape it ("\/") *OR*
    use an alternate delimiter.  Generally some syntactic character will
    work, any of:  ".,:|", etc.

  - sed expressions must be contained on one line.

  - sed expressions on the shell should include *both* open *and* close
    quotes.


I think what you want is the following:
 
     sed 's,^,clamscan -ri -l /var/log/clamav/clamav-"$1".log --move=/var/log/clamav/quarantine,'  \
         < /var/log/clamav/diff/diff.txt > /var/log/clamav/virus_scan

 
> I have also tried to use the insert command i\ but it just inserts the 
> text on a new line above each of the lines read from the file instead of 
> just inserting the text at the beginning of each of the lines red from 
> the file?

s/red/read/

Correct.


Peace.

-- 
Karsten M. Self <kmself@ix.netcom.com>        http://kmself.home.netcom.com/
 What Part of "Gestalt" don't you understand?
    Save Bob Edwards!       http://www.savebobedwards.com/

Attachment: signature.asc
Description: Digital signature


Reply to: