[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [bash] Togliere spazi e fine riga



> > 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



Reply to: