a sed question

Liste des GroupesRevenir à cu shell 
Sujet : a sed question
De : smirzo (at) *nospam* example.com (Salvador Mirzo)
Groupes : comp.unix.shell comp.unix.questions
Suivi-à : comp.unix.shell
Date : 18. Dec 2024, 20:46:56
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <874j304vv3.fsf@example.com>
(*) Summary

I wrote a sed script that makes a line replacement after it finds the
right spot.  So far so good.  Then I added quit command after the
change, but the quit does not seem to take effect---violating my
expectation.  I'll appreciate any help on understanding what's going on.

(*) A detailed description

I wrote this program:

--8<-------------------------------------------------------->8---
%cat make-release
#!/bin/sh
usage()
{
  printf '%s tag file\n' $0
  exit 1
}
test $# '<' 2 && usage
tag="$1"
shift
sed "/<<Release>>=/ {
 n;
 c\
$tag
}" $*
--8<-------------------------------------------------------->8---

Here's how I use it.  My objective with it is to replace that
/something/ in the text file with a new argument.

--8<-------------------------------------------------------->8---
%cat sample.txt
Lorem ipsum dolor...

<<Release>>=
something
@

... sit a met [...]
%
--8<-------------------------------------------------------->8---

Here's how I invoke it:

--8<-------------------------------------------------------->8---
%sh make-release release1 sample.txt
Lorem ipsum dolor...

<<Release>>=
release1
@

... sit a met [...]
--8<-------------------------------------------------------->8---

So far so good.  I decided to try it on longer files and I wanted to see
the change more quickly (without long files scrolling past my terminal),
so I decided to add a /q/ command right after the c commmand.  I
thought---it will make sed quit right after making the change, so I can
see it works as desired and then I remove the /q/ and release it to
production.  But that did not happen.

--8<-------------------------------------------------------->8---
%cat make-release
#!/bin/sh
usage()
{
  printf '%s tag file\n' $0
  exit 1
}
test $# '<' 2 && usage
tag="$1"
shift
sed "/<<Release>>=/ {
 n;
 c\
$tag
q}" $*
--8<-------------------------------------------------------->8---

I still see the whole file:

--8<-------------------------------------------------------->8---
%sh make-release release1 sample.txt
Lorem ipsum dolor...

<<Release>>=
release1
@

... sit a met [...]
%
--8<-------------------------------------------------------->8---

I failed the exercise I gave myself.  Can you help me to understand why
the q command isn't stopping sed as I thought it would?  I'd like to get
a better intuition.

I've been reading Dale Dougherty and Arnold Robin's ``sed & awk'' book.
If you have any recommended sed-related bibliography, I'd appreciate it,
too.

Date Sujet#  Auteur
18 Dec 24 * a sed question64Salvador Mirzo
18 Dec 24 +- Re: a sed question1John-Paul Stewart
19 Dec 24 +* Re: a sed question16Ralf Damaschke
19 Dec 24 i`* Re: a sed question15Salvador Mirzo
20 Dec 24 i `* Re: a sed question14Ralf Damaschke
20 Dec 24 i  `* Re: a sed question13Kenny McCormack
21 Dec 24 i   `* Re: a sed question12Ralf Damaschke
21 Dec 24 i    `* Re: a sed question11Kaz Kylheku
21 Dec 24 i     +* sed... (Was: a sed question)8Kenny McCormack
21 Dec 24 i     i`* Re: sed... (Was: a sed question)7Kaz Kylheku
21 Dec 24 i     i +* Re: sed... (Was: a sed question)4Janis Papanagnou
21 Dec 24 i     i i`* Re: sed... (Was: a sed question)3Janis Papanagnou
21 Dec 24 i     i i `* Re: sed...2Keith Thompson
22 Dec 24 i     i i  `- Re: sed...1Janis Papanagnou
21 Dec 24 i     i `* Re: sed... (Was: a sed question)2Lars Poulsen
22 Dec 24 i     i  `- Re: sed... (Was: a sed question)1Kaz Kylheku
21 Dec 24 i     +- Re: a sed question1Janis Papanagnou
22 Dec 24 i     `- Re: a sed question1Ralf Damaschke
20 Dec 24 +* Re: a sed question18Janis Papanagnou
20 Dec 24 i+* Checking for right # of args in a shell script (Was: a sed question)3Kenny McCormack
20 Dec 24 ii`* Re: Checking for right # of args in a shell script (Was: a sed question)2Janis Papanagnou
20 Dec 24 ii `- Re: Checking for right # of args in a shell script (Was: a sed question)1Kenny McCormack
21 Dec 24 i+* Re: a sed question13Salvador Mirzo
21 Dec 24 ii+* Re: a sed question7Janis Papanagnou
21 Dec 24 iii`* Re: a sed question6Keith Thompson
22 Dec 24 iii `* Re: a sed question5Janis Papanagnou
22 Dec 24 iii  +* Re: a sed question2Keith Thompson
22 Dec 24 iii  i`- Re: a sed question1Janis Papanagnou
22 Dec 24 iii  `* Re: a sed question2Lawrence D'Oliveiro
22 Dec 24 iii   `- Re: a sed question1Janis Papanagnou
21 Dec 24 ii+* Re: a sed question4Andy Walker
21 Dec 24 iii+- Re: a sed question1Janis Papanagnou
21 Dec 24 iii`* Re: a sed question2Salvador Mirzo
21 Dec 24 iii `- Re: a sed question1Janis Papanagnou
21 Dec 24 ii`- Re: a sed question1Helmut Waitzmann
22 Dec 24 i`- Re: a sed question1Janis Papanagnou
21 Dec 24 `* Re: a sed question28Ed Morton
21 Dec 24  `* Re: a sed question27Lawrence D'Oliveiro
22 Dec 24   +* Re: a sed question12Janis Papanagnou
22 Dec 24   i`* Re: a sed question11Lawrence D'Oliveiro
22 Dec 24   i +* Re: a sed question9Keith Thompson
22 Dec 24   i i`* Re: a sed question8Lawrence D'Oliveiro
22 Dec 24   i i `* Re: a sed question7Keith Thompson
22 Dec 24   i i  `* Re: a sed question6Lawrence D'Oliveiro
22 Dec 24   i i   `* Re: a sed question5Keith Thompson
23 Dec 24   i i    `* Re: a sed question4Eric Pozharski
23 Dec 24   i i     `* Re: a sed question3Kenny McCormack
23 Dec 24   i i      +- Re: a sed question1Kaz Kylheku
24 Dec 24   i i      `- Re: a sed question1Eric Pozharski
22 Dec 24   i `- Re: a sed question1Janis Papanagnou
22 Dec 24   +- Re: a sed question1Kenny McCormack
22 Dec 24   +- Re: a sed question1Kaz Kylheku
23 Dec 24   `* Re: a sed question12Ed Morton
23 Dec 24    +- How to solve The Miracle (was Re: a sed question)1Janis Papanagnou
23 Dec 24    `* Re: a sed question10Lawrence D'Oliveiro
24 Dec 24     +* Re: a sed question4Keith Thompson
24 Dec 24     i`* Re: a sed question3Lawrence D'Oliveiro
23 Mar 25     i `* Re: a sed question2anthk
24 Mar 25     i  `- Re: a sed question1Lawrence D'Oliveiro
24 Dec 24     `* Re: a sed question5Ed Morton
24 Dec 24      +- Dealing with four-year-olds... (Was: a sed question)1Kenny McCormack
24 Dec 24      `* Re: a sed question3Lawrence D'Oliveiro
24 Dec 24       `* Re: a sed question2Kaz Kylheku
25 Dec 24        `- Arguing with a four-year-old (Was: a sed question)1Kenny McCormack

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal