Newsgroup: it.comp.os.linux.sys
Titolo: VIM , cancellare tutte le righe vuote

Ciao a tutti,
qualcuno sa qual è il comando per cancellare tutte le righe vuote
all'interno di un file?
Ho provato %j ma mi toglie anche il CR (a capo) di ogni riga  :(
grazie!!
andrea

Andrea wrote:

non e' da dentro vim, ma...
grep -m '^$' nomefile > nomefile_ && mv nomefile_ nomefile
(da testare)
-- 
Under construction

 all'interno di un file?
  Da vi?
  Hai provato con
:g/^$/d
  e non ti funziona, o ti serve proprio questo? :-o
  Saluti,
-- 
Gianfranco Bertozzi
http://www.locandamilu.it
Linux User #183585

 
ottimo! funziona.
grazie.

>
visto che ci siamo ;)
non è che sapete come cancellare tutte le righe (vuote e non) che NON
contengono i caratteri "http:" (non sono ad inizio riga) ??
Grazie ancora!

 Grazie ancora!
Provo io:
:g!/http:/d
PS: non ti fidare.. vado a intuito guardando il codice di prima
Alessandro

 grep -m '^$' nomefile > nomefile_ && mv nomefile_ nomefile
Non era `grep -v blablabla file1 > file2` ?
Enrico

 Non era `grep -v blablabla file1 > file2` ?
erh, si', cannata lettera...
-- 
Under construction

Alessandro ha scritto:

mitico, funziona.
Ultimisssssimiissima: se dovessi cancellare da inizio riga ad un
determinato carattere?
ho provato con
:g/^ http/d
ma non va

 
Così cancelli tutte le righe che iniziano con uno spazio seguito da http.
Se vuoi cancellare la stringa " http"  ad inizio riga usa:
:1,$s/^ http//
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 :1,$s/^ http//
no, in realtà voglio cancellare tutti i caratteri PRIMA di http:// di
ogni riga.

 ogni riga.
Con un passaggio mi sa che e` un bordello...
Potresti fare cosi`:
s/^.* http\:\/\///
s/^/http\:\/\//
In pratica, prima rimuovi dall'inizio a http:// (compreso), dopo
reinserisci ad inizio riga http://
Enrico

 Con un passaggio mi sa che e` un bordello...
:1,$s/^.*\(http:\/\/.*\)/\1/
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 
focca la bindella :)
ma come cavolo fai a conoscerlo così bene??
grazie mille!

 ma come cavolo fai a conoscerlo cosě bene??
:help usr_27.txt
:help change.txt
Il primo sulle regex č propedeutico per capire il secondo.


 grep -m '^$' nomefile > nomefile_ && mv nomefile_ nomefile
A questo punto dentro vim:
:%!grep -v ^$

 :1,$s/^.*\(http:\/\/.*\)/\1/
Io preferisco scrivere:
:%s,.*http://,http://,:
Ma il problema grosso e` la greedyness.
esempio:
Sulla stessa linea ho due indirizzi WEB
blabla 
http://pippo.topolinia.net
 blabla 
http://paperino.paperopoli.com
 et
cetera
i comandi di sostituzione restituiscono
http://paperino.paperopoli.com
 et cetera
Cio` potrebbe caurare la perdita di informazioni importanti.

 Cio` potrebbe caurare la perdita di informazioni importanti.
:%s/^.\{-}http:/http:/

 :%s/^.\{-}http:/http:/
Che bello!
Perche' sed non la ha?


 sed 's/^.*\?http/http/'
;-)

  sed 's/^.*\?http/http/'
Non funziona.
$ echo axxbxxb pluto | sed 's/a.*\?b/ pippo /'
 pippo  pluto
$ sed --version
GNU sed versione 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
Questo è software libero; si veda il sorgente per le condizioni di
copiatura.
NON c'è garanzia; neppure di COMMERCIABILITA' o IDONEITA' AD UN PARTICOLARE
SCOPO, nei limiti permessi dalla legge.
$ 

  pippo  pluto
Vero, me ne dimentico sempre, sed e' solo greedy,
AFAIK: accetta l'operatore *? ma non lo onora. 
Prova con:
$ echo axxbxxb pluto | ssed -R 's/a.*?b/ pippo /'
(ma cosi' non vale)
Fabio

 $ echo axxbxxb pluto | ssed -R 's/a.*?b/ pippo /'
Daro` una occhiata.