Replace only on the first matching line with sedHow to delete empty comments with sed?sed replace only lines with matching groupsSed: replace particular one/two digit(s)how to modify matches to a regular expression with sed or another tool?BSD sed: Replace only the Nth occurrence of a patternRemove hyphenation with sedHow to delete everything (in every line) in a text file after a pattern of characters(including the pattern)?RegEx match + additional line removalUsing sed to replace all occurrences at the beginning with a matching number of replacement stringssed replace matching line which does not start with #

What can I do if someone tampers with my SSH public key?

Too soon for a plot twist?

Converting from "matrix" data into "coordinate" data

Automaton recognizing ambiguously accepted words of another automaton

Smooth vector fields on a surface modulo diffeomorphisms

Is it possible to clone a polymorphic object without manually adding overridden clone method into each derived class in C++?

How do we create new idioms and use them in a novel?

Sampling from Gaussian mixture models, when are the sampled data independent?

Can the Witch Sight warlock invocation see through the Mirror Image spell?

Why does this boat have a landing pad? (SpaceX's GO Searcher) Any plans for propulsive capsule landings?

Do black holes violate the conservation of mass?

Cycles on the torus

How exactly does an Ethernet collision happen in the cable, since nodes use different circuits for Tx and Rx?

How to install round brake pads

Is there a logarithm base for which the logarithm becomes an identity function?

Locked Away- What am I?

Graphic representation of a triangle using ArrayPlot

Finding the minimum value of a function without using Calculus

Movie: boy escapes the real world and goes to a fantasy world with big furry trolls

What is this tube in a jet engine's air intake?

Are all players supposed to be able to see each others' character sheets?

What does the Digital Threat scope actually do?

Either of .... (Plural/Singular)

Writing text next to a table



Replace only on the first matching line with sed


How to delete empty comments with sed?sed replace only lines with matching groupsSed: replace particular one/two digit(s)how to modify matches to a regular expression with sed or another tool?BSD sed: Replace only the Nth occurrence of a patternRemove hyphenation with sedHow to delete everything (in every line) in a text file after a pattern of characters(including the pattern)?RegEx match + additional line removalUsing sed to replace all occurrences at the beginning with a matching number of replacement stringssed replace matching line which does not start with #













4















Using BSD sed (no GNU extensions), how can I perform an operation similar to the example provided below, but where instead of the line number, the replacement is performed on the first line in which a pattern occurs (rather than having to specify an actual number)?




Restricting to a line number



The simplest restriction is a line number.

If you wanted to delete the first number on line 3, just add a "3" before the command:



sed '3 s/[0-9][0-9]*//' <filename >newfilename




Source: http://www.grymoire.com/Unix/Sed.html#uh-26










share|improve this question
























  • Please edit your question and give us an example input and the output you would like to see. It seems like you are just asking how you can replace only the first occurrence of a string in a file but it's hard to understand without an example.

    – terdon
    Dec 20 '15 at 22:59











  • @terdon "It seems like you are just asking how you can replace only the first occurrence of a string in a file.." Yes, exactly. That's correct.

    – tjt263
    Dec 20 '15 at 23:05












  • OK. So, please edit your question and add an example input and the output you would like to see with it.

    – terdon
    Dec 20 '15 at 23:09






  • 2





    That's question 4.11 of the sed FAQ

    – Stéphane Chazelas
    Dec 20 '15 at 23:22















4















Using BSD sed (no GNU extensions), how can I perform an operation similar to the example provided below, but where instead of the line number, the replacement is performed on the first line in which a pattern occurs (rather than having to specify an actual number)?




Restricting to a line number



The simplest restriction is a line number.

If you wanted to delete the first number on line 3, just add a "3" before the command:



sed '3 s/[0-9][0-9]*//' <filename >newfilename




Source: http://www.grymoire.com/Unix/Sed.html#uh-26










share|improve this question
























  • Please edit your question and give us an example input and the output you would like to see. It seems like you are just asking how you can replace only the first occurrence of a string in a file but it's hard to understand without an example.

    – terdon
    Dec 20 '15 at 22:59











  • @terdon "It seems like you are just asking how you can replace only the first occurrence of a string in a file.." Yes, exactly. That's correct.

    – tjt263
    Dec 20 '15 at 23:05












  • OK. So, please edit your question and add an example input and the output you would like to see with it.

    – terdon
    Dec 20 '15 at 23:09






  • 2





    That's question 4.11 of the sed FAQ

    – Stéphane Chazelas
    Dec 20 '15 at 23:22













4












4








4








Using BSD sed (no GNU extensions), how can I perform an operation similar to the example provided below, but where instead of the line number, the replacement is performed on the first line in which a pattern occurs (rather than having to specify an actual number)?




Restricting to a line number



The simplest restriction is a line number.

If you wanted to delete the first number on line 3, just add a "3" before the command:



sed '3 s/[0-9][0-9]*//' <filename >newfilename




Source: http://www.grymoire.com/Unix/Sed.html#uh-26










share|improve this question
















Using BSD sed (no GNU extensions), how can I perform an operation similar to the example provided below, but where instead of the line number, the replacement is performed on the first line in which a pattern occurs (rather than having to specify an actual number)?




Restricting to a line number



The simplest restriction is a line number.

If you wanted to delete the first number on line 3, just add a "3" before the command:



sed '3 s/[0-9][0-9]*//' <filename >newfilename




Source: http://www.grymoire.com/Unix/Sed.html#uh-26







text-processing sed osx regular-expression bsd






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 24 '15 at 15:53







tjt263

















asked Dec 20 '15 at 22:40









tjt263tjt263

5571520




5571520












  • Please edit your question and give us an example input and the output you would like to see. It seems like you are just asking how you can replace only the first occurrence of a string in a file but it's hard to understand without an example.

    – terdon
    Dec 20 '15 at 22:59











  • @terdon "It seems like you are just asking how you can replace only the first occurrence of a string in a file.." Yes, exactly. That's correct.

    – tjt263
    Dec 20 '15 at 23:05












  • OK. So, please edit your question and add an example input and the output you would like to see with it.

    – terdon
    Dec 20 '15 at 23:09






  • 2





    That's question 4.11 of the sed FAQ

    – Stéphane Chazelas
    Dec 20 '15 at 23:22

















  • Please edit your question and give us an example input and the output you would like to see. It seems like you are just asking how you can replace only the first occurrence of a string in a file but it's hard to understand without an example.

    – terdon
    Dec 20 '15 at 22:59











  • @terdon "It seems like you are just asking how you can replace only the first occurrence of a string in a file.." Yes, exactly. That's correct.

    – tjt263
    Dec 20 '15 at 23:05












  • OK. So, please edit your question and add an example input and the output you would like to see with it.

    – terdon
    Dec 20 '15 at 23:09






  • 2





    That's question 4.11 of the sed FAQ

    – Stéphane Chazelas
    Dec 20 '15 at 23:22
















Please edit your question and give us an example input and the output you would like to see. It seems like you are just asking how you can replace only the first occurrence of a string in a file but it's hard to understand without an example.

– terdon
Dec 20 '15 at 22:59





Please edit your question and give us an example input and the output you would like to see. It seems like you are just asking how you can replace only the first occurrence of a string in a file but it's hard to understand without an example.

– terdon
Dec 20 '15 at 22:59













@terdon "It seems like you are just asking how you can replace only the first occurrence of a string in a file.." Yes, exactly. That's correct.

– tjt263
Dec 20 '15 at 23:05






@terdon "It seems like you are just asking how you can replace only the first occurrence of a string in a file.." Yes, exactly. That's correct.

– tjt263
Dec 20 '15 at 23:05














OK. So, please edit your question and add an example input and the output you would like to see with it.

– terdon
Dec 20 '15 at 23:09





OK. So, please edit your question and add an example input and the output you would like to see with it.

– terdon
Dec 20 '15 at 23:09




2




2





That's question 4.11 of the sed FAQ

– Stéphane Chazelas
Dec 20 '15 at 23:22





That's question 4.11 of the sed FAQ

– Stéphane Chazelas
Dec 20 '15 at 23:22










2 Answers
2






active

oldest

votes


















0














 sed -Ee'/[0-9]+/s///;q;'; cat; <in >out


^should work w/ a BSD sed. but apparently it doesn't.



and so:



sed -e'/[0-9][0-9]*/s///;:b' -e'n;bb' -e <in >out


...should work with any of them.






share|improve this answer




















  • 1





    Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

    – Stéphane Chazelas
    Dec 20 '15 at 23:33












  • @StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

    – mikeserv
    Dec 20 '15 at 23:40






  • 1





    To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

    – Stéphane Chazelas
    Dec 20 '15 at 23:55












  • @StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

    – mikeserv
    Dec 21 '15 at 0:01


















0














This works perfectly:



sed '1,/abc/s/abc/xyz/' file.txt


Can be abbreviated to:



sed '1,/abc/s//xyz/' file.txt


Compatible with GNU & BSD:



sed '1,/[0-9][0-9]*/s///' <filename >newfilename





share|improve this answer




















  • 1





    That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

    – Stéphane Chazelas
    Dec 21 '15 at 11:08












  • (Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

    – tjt263
    Jan 4 '16 at 7:25










Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f250603%2freplace-only-on-the-first-matching-line-with-sed%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














 sed -Ee'/[0-9]+/s///;q;'; cat; <in >out


^should work w/ a BSD sed. but apparently it doesn't.



and so:



sed -e'/[0-9][0-9]*/s///;:b' -e'n;bb' -e <in >out


...should work with any of them.






share|improve this answer




















  • 1





    Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

    – Stéphane Chazelas
    Dec 20 '15 at 23:33












  • @StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

    – mikeserv
    Dec 20 '15 at 23:40






  • 1





    To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

    – Stéphane Chazelas
    Dec 20 '15 at 23:55












  • @StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

    – mikeserv
    Dec 21 '15 at 0:01















0














 sed -Ee'/[0-9]+/s///;q;'; cat; <in >out


^should work w/ a BSD sed. but apparently it doesn't.



and so:



sed -e'/[0-9][0-9]*/s///;:b' -e'n;bb' -e <in >out


...should work with any of them.






share|improve this answer




















  • 1





    Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

    – Stéphane Chazelas
    Dec 20 '15 at 23:33












  • @StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

    – mikeserv
    Dec 20 '15 at 23:40






  • 1





    To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

    – Stéphane Chazelas
    Dec 20 '15 at 23:55












  • @StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

    – mikeserv
    Dec 21 '15 at 0:01













0












0








0







 sed -Ee'/[0-9]+/s///;q;'; cat; <in >out


^should work w/ a BSD sed. but apparently it doesn't.



and so:



sed -e'/[0-9][0-9]*/s///;:b' -e'n;bb' -e <in >out


...should work with any of them.






share|improve this answer















 sed -Ee'/[0-9]+/s///;q;'; cat; <in >out


^should work w/ a BSD sed. but apparently it doesn't.



and so:



sed -e'/[0-9][0-9]*/s///;:b' -e'n;bb' -e <in >out


...should work with any of them.







share|improve this answer














share|improve this answer



share|improve this answer








edited Dec 20 '15 at 23:56









Stéphane Chazelas

309k57582942




309k57582942










answered Dec 20 '15 at 23:18









mikeservmikeserv

45.8k668160




45.8k668160







  • 1





    Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

    – Stéphane Chazelas
    Dec 20 '15 at 23:33












  • @StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

    – mikeserv
    Dec 20 '15 at 23:40






  • 1





    To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

    – Stéphane Chazelas
    Dec 20 '15 at 23:55












  • @StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

    – mikeserv
    Dec 21 '15 at 0:01












  • 1





    Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

    – Stéphane Chazelas
    Dec 20 '15 at 23:33












  • @StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

    – mikeserv
    Dec 20 '15 at 23:40






  • 1





    To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

    – Stéphane Chazelas
    Dec 20 '15 at 23:55












  • @StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

    – mikeserv
    Dec 21 '15 at 0:01







1




1





Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

– Stéphane Chazelas
Dec 20 '15 at 23:33






Doesn't work on FreeBSD 10 even on seekable input. On FreeBSD, you can run sed under stdbuf -i 1 to work around it (would read the input one byte at a time though)

– Stéphane Chazelas
Dec 20 '15 at 23:33














@StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

– mikeserv
Dec 20 '15 at 23:40





@StéphaneChazelas - weird. should work on a Mac, though. I would think - it has the stamp.

– mikeserv
Dec 20 '15 at 23:40




1




1





To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

– Stéphane Chazelas
Dec 20 '15 at 23:55






To clarify, now that the answer was edited with a second, portable solution, it's the first one that doesn't work on FreeBSD 10 (though should on seekable files if FreeBSD were POSIX (q leaving the cursor in the right place)), the second one is even better than the solution given in the FAQ as the FAQ one uses N instead of n (which would slurp the rest of the file in the pattern space).

– Stéphane Chazelas
Dec 20 '15 at 23:55














@StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

– mikeserv
Dec 21 '15 at 0:01





@StéphaneChazelas - I noticed that as well, which is why I didn't delete it - though I thought at first I would. thanks again, sc.

– mikeserv
Dec 21 '15 at 0:01













0














This works perfectly:



sed '1,/abc/s/abc/xyz/' file.txt


Can be abbreviated to:



sed '1,/abc/s//xyz/' file.txt


Compatible with GNU & BSD:



sed '1,/[0-9][0-9]*/s///' <filename >newfilename





share|improve this answer




















  • 1





    That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

    – Stéphane Chazelas
    Dec 21 '15 at 11:08












  • (Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

    – tjt263
    Jan 4 '16 at 7:25















0














This works perfectly:



sed '1,/abc/s/abc/xyz/' file.txt


Can be abbreviated to:



sed '1,/abc/s//xyz/' file.txt


Compatible with GNU & BSD:



sed '1,/[0-9][0-9]*/s///' <filename >newfilename





share|improve this answer




















  • 1





    That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

    – Stéphane Chazelas
    Dec 21 '15 at 11:08












  • (Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

    – tjt263
    Jan 4 '16 at 7:25













0












0








0







This works perfectly:



sed '1,/abc/s/abc/xyz/' file.txt


Can be abbreviated to:



sed '1,/abc/s//xyz/' file.txt


Compatible with GNU & BSD:



sed '1,/[0-9][0-9]*/s///' <filename >newfilename





share|improve this answer















This works perfectly:



sed '1,/abc/s/abc/xyz/' file.txt


Can be abbreviated to:



sed '1,/abc/s//xyz/' file.txt


Compatible with GNU & BSD:



sed '1,/[0-9][0-9]*/s///' <filename >newfilename






share|improve this answer














share|improve this answer



share|improve this answer








edited 7 mins ago









Spooky

20126




20126










answered Dec 21 '15 at 10:37









tjt263tjt263

5571520




5571520







  • 1





    That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

    – Stéphane Chazelas
    Dec 21 '15 at 11:08












  • (Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

    – tjt263
    Jan 4 '16 at 7:25












  • 1





    That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

    – Stéphane Chazelas
    Dec 21 '15 at 11:08












  • (Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

    – tjt263
    Jan 4 '16 at 7:25







1




1





That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

– Stéphane Chazelas
Dec 21 '15 at 11:08






That doesn't work (could run that s command on more than one line) if the first match is on the first line (as noted in the FAQ)

– Stéphane Chazelas
Dec 21 '15 at 11:08














(Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

– tjt263
Jan 4 '16 at 7:25





(Yeah, okay, we get it - You've read the FAQ.) If theres a match on the first line; the question is irrelevant, so thats fine.

– tjt263
Jan 4 '16 at 7:25

















draft saved

draft discarded
















































Thanks for contributing an answer to Unix & Linux Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f250603%2freplace-only-on-the-first-matching-line-with-sed%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Frič See also Navigation menuinternal link

Identify plant with long narrow paired leaves and reddish stems Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?What is this plant with long sharp leaves? Is it a weed?What is this 3ft high, stalky plant, with mid sized narrow leaves?What is this young shrub with opposite ovate, crenate leaves and reddish stems?What is this plant with large broad serrated leaves?Identify this upright branching weed with long leaves and reddish stemsPlease help me identify this bulbous plant with long, broad leaves and white flowersWhat is this small annual with narrow gray/green leaves and rust colored daisy-type flowers?What is this chilli plant?Does anyone know what type of chilli plant this is?Help identify this plant

fontconfig warning: “/etc/fonts/fonts.conf”, line 100: unknown “element blank” The 2019 Stack Overflow Developer Survey Results Are In“tar: unrecognized option --warning” during 'apt-get install'How to fix Fontconfig errorHow do I figure out which font file is chosen for a system generic font alias?Why are some apt-get-installed fonts being ignored by fc-list, xfontsel, etc?Reload settings in /etc/fonts/conf.dTaking 30 seconds longer to boot after upgrade from jessie to stretchHow to match multiple font names with a single <match> element?Adding a custom font to fontconfigRemoving fonts from fontconfig <match> resultsBroken fonts after upgrading Firefox ESR to latest Firefox