Sida 1 av 1

Sätta in text frammför varje rad i textfil

Postat: 18 dec 2007, 19:06
av Emil.s
Jag har en lång textfil där jag skulle vilja sätta in en textbit före all ext på varje rad. Gärna innifrån Vim. Men det spelar egentligen ingen roll bara det går...

SV: Sätta in text frammför varje rad i textfil

Postat: 18 dec 2007, 23:44
av Lars
Vim vet jag inte, men awk:

Kod: Markera allt

awk '{print "text att lägga till", $0}' filnamn
Och nu vill jag se minst 5 alternativa lösningar ;)

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 00:13
av mcNisse
1,100:s/^/extraText/
stoppar in extraText på rad 1 till 100.

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 00:16
av mcNisse

Kod: Markera allt

sed s/^/extraText/ filnam > nyFil

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 00:19
av Emil.s
Ah, tänkte inte på att man kan köra "sed" i Vim...
Och "s/^" var väl ganska självklar. :P

Tack iallafall!

Och Lars, ahhh! Har några riktigt bra guider för AWK, men att läsa och göra än en annan sak. ;)

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 06:51
av Konservburk
Emil.s skrev: Ah, tänkte inte på att man kan köra "sed" i Vim...
Det är nog snarare så att du "kör" ed både i vim och sed.

vim: vi improved
vi: visual ex
ex: extended

sed: stream ed

Om man ska vara riktigt petig så hämtade ed "s/regexp/string/"-syntaxen från
QED som var först med att använda regexp.

Se manualbadet sidan 13: http://cm.bell-labs.com/cm/cs/who/dmr/qeddoc.html
Det är värt att lägga märke till är vilka som står som author för manualbladet....
D. M. Ritchie och K. L. Thompson, samma personer som ligger bakom unix och
C-prorgammering.

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 09:32
av per9000
en av många varianter i python, min variant kräver 7 rader kod och tre argument i kommandoraden (inil, utfil, prefix)

Kod: Markera allt

from sys import argv
f = open(argv[1],'r')
o = open(argv[2],'w')
for line in f:
  o.write("%s%s" % (argv[3], line))
  
f.close()
o.close()

Kod: Markera allt

$ cat tmp-ls
keyring-nIyIj6
ssh-eKmRDy6062
tms-ls

$ python prefix.py tmp-ls tmp-ls-prefix "foobar is the shit"

$ cat tmp-ls-prefix 
foobar is the shitkeyring-nIyIj6
foobar is the shitssh-eKmRDy6062
foobar is the shittms-ls
/Per

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 09:37
av mcNisse
En perl variant någon? Så att vi kommer upp i 5 varianter... ;)

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 10:53
av Emil.s
Konservburk skrev:
Emil.s skrev: Ah, tänkte inte på att man kan köra "sed" i Vim...
Det är nog snarare så att du "kör" ed både i vim och sed.

vim: vi improved
vi: visual ex
ex: extended

sed: stream ed

Om man ska vara riktigt petig så hämtade ed "s/regexp/string/"-syntaxen från
QED som var först med att använda regexp.

Se manualbadet sidan 13: http://cm.bell-labs.com/cm/cs/who/dmr/qeddoc.html
Det är värt att lägga märke till är vilka som står som author för manualbladet....
D. M. Ritchie och K. L. Thompson, samma personer som ligger bakom unix och
C-prorgammering.
Ojdå! Nog för att jag tänkte att detta var någon som hängt med från urtiden, men detta hade jag inte räknat med. Tackar för "historia lektionen"! :)

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 11:20
av mcNisse
Jag orkar inte vänta på en perl variant så jag gjorde en själv... (Lars du ska inte uppmana till sådan här dumheter  :D ;D . Jag gillar det...)

script.pl

Kod: Markera allt

while (<STDIN>) {
  print $ARGV[0], $_;
}
Användning:

Kod: Markera allt

perl script.pl "extraText" < fil > nyfil

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 11:37
av Lars
En Emacs-lösning måste vi ha också: ctrl+alt+% ^ enter extratext enter !

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 11:49
av mcNisse
Emacs lösning.

Ställ dig på första raden.

Kod: Markera allt

C-x (
C-a
extraText
C-n
C-x )

C-u  "antal rader i filen - 1" C-x e
edit: En annan lösning (lite enklare)

Kod: Markera allt

M-C-% 
^
extraText
!

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 14:16
av DeepThought
För oss som fortfarande sitter som UFOn och undrar: finns det någon nybörjarguide för sed, awk och regexp? Alltså inte manualblad, utan gärna väldigt förklarande text och små övningar att göra? :)

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 14:32
av per9000
DeepThought skrev: För oss som fortfarande sitter som UFOn och undrar: finns det någon nybörjarguide för sed, awk och regexp? Alltså inte manualblad, utan gärna väldigt förklarande text och små övningar att göra? :)
Ja det skulle inte vara dumt - jag försökte lära mig sed med trial-and-error... Lite som att dricka te med ätpinnar :(

/Per

SV: Sätta in text frammför varje rad i textfil

Postat: 19 dec 2007, 16:13
av Emil.s
Jo, det är väl inte så där självinstruerande. :P

Själv har jag kikat lite i Unix Text processing:
http://www.oreilly.com/openbook/utp/

Tar upp AWK, Sed och en massa annat. :)