[bash] Togliere spazi e fine riga

2004-12-16 Per discussione Andrea Ganduglia
Come faccio a togliere tutti gli spazi e le righe vuote da un file di
testo? In pratica vorrei mettere tutto quello che e' scritto nel file
su una sola riga.

Grazie




Re: [bash] Togliere spazi e fine riga

2004-12-16 Per discussione gettingout
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Andrea Ganduglia wrote:
 Come faccio a togliere tutti gli spazi e le righe vuote da un file di
 testo? In pratica vorrei mettere tutto quello che e' scritto nel file
 su una sola riga.
Intendi togliere anche tutti gli spazi tra le parole o solo le righe
vuote e gli a capo?

Per togliere le righe vuote (non ho egrep sotto mano e vado a naso)

$egrep -v ^\s*$ file  file.out

forse in egrep gli spazi sono gestiti con la classe [:space:] ma non
ricordo di preciso, percui quello sopra diventa

$egrep -v ^[:space:]*$ file  file.out

Per togliere gli a capo al momento non mi viene in mente :)

Ciao
D.

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.1 (MingW32)

iD8DBQFBwV7Mxtglw1pRrJ0RAm1uAJ9TXSMXO4z64bQqsCeTLGQ9X4RvQwCgiiQK
rchb9pXmVbeQdGPCXakN50s=
=DeWR
-END PGP SIGNATURE-




Re: [bash] Togliere spazi e fine riga

2004-12-16 Per discussione petdog
  Come faccio a togliere tutti gli spazi e le righe vuote da un file di
  testo? In pratica vorrei mettere tutto quello che e' scritto nel file
  su una sola riga.
 Intendi togliere anche tutti gli spazi tra le parole o solo le righe
 vuote e gli a capo?
 
 Per togliere le righe vuote (non ho egrep sotto mano e vado a naso)
 
 $egrep -v ^\s*$ file  file.out
 
 forse in egrep gli spazi sono gestiti con la classe [:space:] ma non
 ricordo di preciso, percui quello sopra diventa
 
 $egrep -v ^[:space:]*$ file  file.out
 
 Per togliere gli a capo al momento non mi viene in mente :)

Secondo me ti conviene usare uno script... se puoi usare php cli prova questo
(Non conosco il perl :))
#!/usr/bin/php
?php
if($fp=fopen($argv[1],r))
{
for($output=;$data=fgets($fp);$output.=$data);
//sostituisco gli a capo
$output=str_replace(\n, ,$output);
// sostituisco piĆ¹ di due spazi con uno spazio
$output=preg_replace(/\s{2,}/, ,$output); 

echo $output;
}
else echo questo file non mi piace;
?

$ ./xxx.php file_con_gli_spazi_e_gli_a_capo.txt  file_nuovo.txt




Re: [bash] Togliere spazi e fine riga

2004-12-16 Per discussione Andrea Ganduglia
On Thu, 16 Dec 2004 11:46:43 +0100, petdog [EMAIL PROTECTED] wrote:
 Secondo me ti conviene usare uno script... se puoi usare php cli prova questo

E' esattamente quello che ho fatto, grazie!




Re: [bash] Togliere spazi e fine riga

2004-12-16 Per discussione Bob Alexander
Andrea Ganduglia wrote:
On Thu, 16 Dec 2004 11:46:43 +0100, petdog [EMAIL PROTECTED] wrote:
Secondo me ti conviene usare uno script... se puoi usare php cli prova questo

Apparte la preferenza personalissima per il perl :) ma i veri uomini 
:) queste cose non le facevano con sed e/o awk ?

Bob



Re: [bash] Togliere spazi e fine riga

2004-12-16 Per discussione petdog
 :) queste cose non le facevano con sed e/o awk ?
 
 Bob

bello awk, non lo conoscevo... (non sono affatto un vero uomo:)
comunque ho cercato di fargli fare quel lavoretto e non mi riesce

awk -f script.awk file_input.txt  nuovo.txt

script.awk: (secondo il man gsub fa una sostituzione dell'espressione
regolare su tutto l'input)
BEGIN {}
{
gsub(/\n/,) 
gsub(/\s{2,}/,)
}
END {print}

mi stampa l'ultima riga del file ()




Re: [bash] Togliere spazi e fine riga

2004-12-16 Per discussione Bob Alexander
petdog wrote:
:) queste cose non le facevano con sed e/o awk ?
Bob

bello awk, non lo conoscevo... (non sono affatto un vero uomo:)
comunque ho cercato di fargli fare quel lavoretto e non mi riesce
Ehm ... baro ... Google: awk remove trailing blanks - secondo risultato:
The most common and straightforward anwer to remove the trailing spaces
on all line of a file was:
cat infile  | sed -e 's/ *$//'  outfile
What this means:
-eexecute this command for every line
s substitue
/ *$/ any number of spaces, followed by the end of the line...
//...with nothing
Fammi sapere :)
Bob