Toon posts:

sed en \n

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dit is waarschijnlijk een stomme vraag, maar ik vindt het antwoord absoluut niet op google of GOT.

Ik draai slackware 10 met daarop sed 4.0.9, en ik wil dus iets in de stijl van hetvolgende doen:

sed '/test1/a\test2\ntest3' file

Wat ik ook maar probeer, sed wil die "\n" maar niet interpreteren als een new line karakter. Ik weet dat versies beneden de 4.x hier niet mee overweg kunnen, maar dat zou dus geen probleem mogen zijn.
Misschien kan je wel rond dit probleem omheen borduren, maar ik zou ook "\t" (voor tabs) moeten kunnen gebruiken.

Alle hulp is zeer welkom.

  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 10-02 13:39

Glabbeek

Dat dus.

Het lijkt erop dat de enige mogelijkheid om dit te doen, na verschillende tests gedaan te hebben en stukken op internet gelezen te hebben, is een fysieke newline in je call te zetten, dus:

code:
1
2
sed '/test1/a\test2\
test3' file


Waar je na test2\ dus een enter geeft.

En zo is het maar net.


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Dit zal wel volstrekt erbuiten staan, maar bij bijvoorbeeld PHP werken deze dingen alleen tussen de "double quotes". Maar zoals ik al zei zal het er wel los van staan.

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 10-02 13:39

Glabbeek

Dat dus.

Logisch gezien zou je deze karakters inderdaad moeten dubbelquoten, maar helaas helpt dat ook niet.

En zo is het maar net.


  • hesselim
  • Registratie: December 1999
  • Laatst online: 27-08-2024

hesselim

it wasn't me

In de man pages van sed staat ook duidelijk vermeld dat het 'a' commando alleen met embedded newlines werkt (dwz. dus NIET met de symbolen zoals \n, maar met een echte new line ingevoerd via het toetsenbord)

stukje uit man sed:
a \
text

Append text, which has each embedded newline preceeded by a backslash.

System Specs


Verwijderd

Topicstarter
@ Glabbeek: dank je wel! Dit werkt perfect.... vreemd, ik had zoiets gelijkaardigs al geprobeerd, maar toen lukte het niet. Zal wel ergens een foutje gemaakt hebben.

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Mij lukt dit ook niet.

Ik heb een klein testbestandje gemaakt, waarbij elke regel begint met een spatie die weg moet.

code:
1
2
3
 test
 test
 test


Ik probeer het volgende, wat zou moeten werken.

Bash:
1
2
3
$ cat test | sed 's/\
>  /\
> /g'


Maar ik krijg daarbij gewoon het bestand, inclusief de spaties voor elke regel.

Ik ontken het bestaan van IE.


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Wat is er mis met "s/^ //" ?

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Helemaal niets. Ik had er alleen helemaal niet aan gedacht dat dat zou werken, omdat ik ervan uitging dat dat alleen voor de eerste regel zou werken.

De ^ staat dus voor 'begin van de regel' en niet voor 'begin van de string' zoals ik altijd gedacht had.

Enfin, probleem opgelost :) .

Ik ontken het bestaan van IE.

Pagina: 1