The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Strano comportamento di script in crontab PilotGoose Shell scripting e di programmazione 1 06-26-2008 10:54 AM
Aiuto con il mio script di strano! kdyzsa Shell scripting e di programmazione 1 06-15-2008 11:39 PM
Strano comportamento di sudo geomonap UNIX e avanzata per utenti esperti 1 02-03-2006 05:08 PM
alcuna spiegazione per questo comportamento script di shell xiamin Shell scripting e di programmazione 9 11-09-2001 01:13 PM
Weird script Duckman UNIX for Dummies Domande & Risposte 2 03-14-2001 01:53 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 08-30-2008
Peetrus Peetrus is offline
Utente Registrato
  
 

Join Date: Aug 2008
Interventi: 2
Strano comportamento di script di sed

Ho scritto un piccolo script per sostituire alcune parole in tutti i file in una directory.

Codice:
#!/bin/sh

#Get list of files to be edited

file_list=`ls -p`

for i in $file_list
do
echo "Processing $i"

alteredi=`echo "$i" | sed -e 's/\//d/'`

if [ $i = $alteredi ]
then
	if [ $i != "maketest" ]
	then
	#actual altering
	
	cat $i | sed -e "s/login\//login.tst\//" > $i
	cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i
	cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i
	echo "  $i has been altered"
	else
	echo "  Not altering myself"
	fi

else
echo "  Not altering directories"
fi

done
Ora, quando ho eseguito questo script, come un normale utente, solo il primo di 4KB il file viene trasformato. Quindi tutti i file più grandi di 4KB sono tagliati a metà. I restanti byte sono appena lasciati fuori il nuovo file. Quando ho eseguito lo script come root, 8KB sono stati trasformati. C'è un modo di trattare l'intero file?

Quando ho gatto un grande file di testo l'intero file viene stampato sul mio schermo.

Grazie in anticipo.
  #2 (permalink)  
Old 08-30-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: febbraio 2007
Messaggi: 4.312
Non leggere e scrivere nello stesso file e utilizzando con cat sed è ridondante, sostituire queste righe:

Codice:
cat $i | sed -e "s/login\//login.tst\//" > $i
cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i
cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i
con:

Codice:
sed -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" > temp.file
mv temp.file "$1"
Se sei sed versione supporta il flag-i è possibile modificare il file "in situ", senza utilizzare un file temporaneo.

Codice:
sed -i -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1"
Saluti

Ultimo a cura di Franklin52; al 08/30/2008 08:52 AM..
  #3 (permalink)  
Old 08-30-2008
Peetrus Peetrus is offline
Utente Registrato
  
 

Join Date: Aug 2008
Interventi: 2
Grazie. Funziona!
Closed Thread

Segnalibri

Tag
gatto, sed, shell

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 07:48 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0