On Thu, Jul 21, 2016 at 08:00:44AM -0400, bruce wrote:
> Hey guys..
> 
> Sed question.. should be simple, but after stack/net searches, lots or
> trials.. can't seem to get it..
> 
> I've got a case
> 
> foo('txt')
> foo("txt")
> 
> I'd like to have
> 
> foo('/dir1/txt')
> foo("/dir1/txt")
> 
> Now. I do a simple sed search/replace if it just focuses on the txt, but
> crafting a sed that uses the entire input as a search due to the parens
> '()' is a bit painful!  Doing the sed using the \( for the ( wasn't quite
> successful!
> 
> for just the txt..
> 
> sed -i 's/'txt'/'dir1/txt'/' *files.dat
> sed -i 's/"txt"/"dir1/txt"/' *files.dat
> 
> these work...
> 
> any thoughts on how to handle the parens would be cool!
> 
> just irks me that I couldn't see what I missed.
> 

Two more possibilities (the short output lines were unchanged):

# search for entire string, replace only txt
$ sed '/foo(.txt.)/s,txt,/dir/txt,' tst.txt
foo('/dir/txt')
bar('txt')
foo('bar')
foo("/dir/txt")
bar("txt")
foo("bar")

# capture unchanging parts as \1 and \2 using grouping \( & \)
$ sed 's,\(foo(.\)txt\(.)\),\1/dir/txt\2,' tst.txt
foo('/dir/txt')
bar('txt')
foo('bar')
foo("/dir/txt")
bar("txt")
foo("bar")

-- 
Jon H. LaBadie                  jo...@jgcomp.com
--
users mailing list
users@lists.fedoraproject.org
To unsubscribe or change subscription options:
https://lists.fedoraproject.org/admin/lists/users@lists.fedoraproject.org
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org

Reply via email to