Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user > #243621
| From | john doe <johndoe65534@mail.com> |
|---|---|
| Newsgroups | linux.debian.user |
| Subject | Re: Replace line in file based on pattern |
| Date | 2022-01-03 07:50 +0100 |
| Message-ID | <DBpkl-548-1@gated-at.bofh.it> (permalink) |
| References | <DBi9c-Mv-5@gated-at.bofh.it> <DBisy-SG-3@gated-at.bofh.it> <DBkNI-26v-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On 1/3/2022 2:56 AM, Paul M. Foster wrote: > 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. In addition to the other answers: In the below cmds '/^# extension=md/' will only modify the line matching that specific pattern, the first cmd will only replace '# ' while the second will answer your original question. $ printf "%s\n" extention=md '# extension=md' '#extension=md' | sed '/^# extension=md/s/# //' $ printf "%s\n" extention=md '# extension=md' '#extension=md' | sed '/^# extension=md/s/^# extension=md.*/extension=md/' Note that this e-mail is folded by my mailer. -- John Doe
Back to linux.debian.user | Previous | Next — Previous in thread | Find similar | Unroll 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