November 23, 2001
Jag vill ta bort . i slutet på varje variabel med en loop i Linux (bash-script).
nu kan man läsa att $ betyder "det sista tecknet" och om man t.ex. vill ta bort m, om sista tecknet är m skriver man:
sed -e 's/$m//g'
Men om jag nu vill ta bort . så kan man tänka att det ska vara:
sed -e 's/$.//g'
Men, i reguljära uttryck betyder . "ett tecken, vilket tecken som helst" (motsv. * som betyder "en sträng, vilken sträng som helst".
Detta kommando tar då bort sista bokstaven i variablerna oavsett om det är . eller inte.
Nu vill jag veta hur man specifierar att det är en punkt man vill ta bort.
Någon som vet?
January 15, 2004
Borde det inte vara s/m$//g för att ta bort alla m som kommer sist i en rad?
('m' som följs av 'slut på rad' sak sersättas med '')
Jag tror att du behöver escapa punkter om du nu vill ha en punkt och inte 'vilket tecken som helt'.
t.ex. s/.$//g för att ta bort en punkts som förekommer i slutet.
November 23, 2001
ren wrote: Borde det inte vara s/m$//g för att ta bort alla m som kommer sist i en rad?
('m' som följs av 'slut på rad' sak sersättas med '')Jag tror att du behöver escapa punkter om du nu vill ha en punkt och inte 'vilket tecken som helt'.
t.ex. s/.$//g för att ta bort en punkts som förekommer i slutet.
Ja, självklart! Tack så mycket. Och ja, du har rätt $ = "radslut" och ska skrivas efter för att uppfylla villkoret.
Och escapa punkter med tror jag är helt rätt. (har ju programmerat C/C++/Java så jag borde veta.) 😀
Tack, kan ju tala om att detta script behövs för att Samba inte klarar av att visa mappar som slutar med just . (ifall någon någonsin skulle råka ut för samma problem som jag.).
1 Guest(s)