Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.user > #243597

Re: Replace line in file based on pattern

From "Paul M. Foster" <paulf@quillandmouse.com>
Newsgroups linux.debian.user
Subject Re: Replace line in file based on pattern
Date 2022-01-03 03:00 +0100
Message-ID <DBkNI-26v-7@gated-at.bofh.it> (permalink)
References <DBi9c-Mv-5@gated-at.bofh.it> <DBisy-SG-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 1/2/22 6:20 PM, The Wanderer wrote:
> On 2022-01-02 at 17:52, Paul M. Foster wrote:
> 
>> Folks:
>>
>> In a script, I'd like to search for a pattern in a file, and replace
>> that line entirely with a new line, once (not globally). I've tried
> 
> What do you mean by "globally"?

"Globally" just means I want to replace the first instance, rather than 
appending the 'g' modifier to the sed expression.

> 
> If you mean that you want to only replace the first matching line in the
> file, but leave any subsequent matching lines alone... I've never
> actually had occasion to do that, but a bit of Googling (for 'sed first
> match only') found me
> 
> https://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the-first-occurrence-in-a-file
> 
> which looks like at least the seed of a way to do it; see also below.
> 
>> sed -i s/search/new_line/
>>
>> but this only replaces the string itself. I want the script to find the
>> line my search term is on, and replace the whole line with my
>> replacement line.
>>
>> Anyone know how to do this?
> 
> Without re-testing at the moment, I'd say from past experience that you
> want:
> 
> sed -i 's/^.*search.*$/new_line/'
> 
> This matches the beginning of the line, followed by zero or more
> characters, followed by the search string, followed by zero or more
> characters, followed by the end of the line.

This works, as I mentioned in another reply. The context here is a file 
which would have something like: ';extension=gd', to be replaced by 
'extension=gd'. That is, I want to programmatically uncomment a line, in 
most cases.

Paul

Back to linux.debian.user | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Replace line in file based on pattern "Paul M. Foster" <paulf@quillandmouse.com> - 2022-01-03 00:10 +0100
  Re: Replace line in file based on pattern Andy Smith <andy@strugglers.net> - 2022-01-03 00:20 +0100
    Re: Replace line in file based on pattern "Paul M. Foster" <paulf@quillandmouse.com> - 2022-01-03 03:00 +0100
  Re: Replace line in file based on pattern The Wanderer <wanderer@fastmail.fm> - 2022-01-03 00:30 +0100
    Re: Replace line in file based on pattern Greg Wooledge <greg@wooledge.org> - 2022-01-03 00:50 +0100
      Re: Replace line in file based on pattern The Wanderer <wanderer@fastmail.fm> - 2022-01-03 02:20 +0100
        Re: Replace line in file based on pattern Greg Wooledge <greg@wooledge.org> - 2022-01-03 02:50 +0100
          Re: Replace line in file based on pattern "Paul M. Foster" <paulf@quillandmouse.com> - 2022-01-03 03:30 +0100
            Re: Replace line in file based on pattern Andrei POPESCU <andreimpopescu@gmail.com> - 2022-01-15 13:40 +0100
      Re: Replace line in file based on pattern "Paul M. Foster" <paulf@quillandmouse.com> - 2022-01-03 04:00 +0100
        Re: Replace line in file based on pattern Greg Wooledge <greg@wooledge.org> - 2022-01-03 05:10 +0100
          Re: Replace line in file based on pattern "Paul M. Foster" <paulf@quillandmouse.com> - 2022-01-03 14:40 +0100
            Re: Replace line in file based on pattern David Wright <deblis@lionunicorn.co.uk> - 2022-01-04 20:50 +0100
    Re: Replace line in file based on pattern "Paul M. Foster" <paulf@quillandmouse.com> - 2022-01-03 03:00 +0100
      Re: Replace line in file based on pattern john doe <johndoe65534@mail.com> - 2022-01-03 07:50 +0100

csiph-web