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

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

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

Inlägg 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...
Home sweet ~/ = http://sandnabba.se
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

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

Inlägg 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 ;)
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

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

Inlägg av mcNisse »

1,100:s/^/extraText/
stoppar in extraText på rad 1 till 100.
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

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

Inlägg av mcNisse »

Kod: Markera allt

sed s/^/extraText/ filnam > nyFil
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

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

Inlägg 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. ;)
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

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

Inlägg 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.
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

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

Inlägg 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
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

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

Inlägg av mcNisse »

En perl variant någon? Så att vi kommer upp i 5 varianter... ;)
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

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

Inlägg 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"! :)
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

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

Inlägg 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
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

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

Inlägg av Lars »

En Emacs-lösning måste vi ha också: ctrl+alt+% ^ enter extratext enter !
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

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

Inlägg 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
!
Senast redigerad av 1 mcNisse, redigerad totalt 19 gånger.
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
DeepThought
Inlägg: 2769
Blev medlem: 19 dec 2006, 11:07
OS: Arch Linux
Ort: Göteborg

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

Inlägg 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? :)
WE WILL ALWAYS BE SO MUCH MORE HUMAN THAN WE WISH TO BE...
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

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

Inlägg 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
--
Per Erik Strandberg
Yet Another IT Consultant
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

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

Inlägg 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. :)
Home sweet ~/ = http://sandnabba.se
Skriv svar

Återgå till "Terminalforum"