The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Konstigt beteende från script i crontab PilotGoose Shell-programmering och Skript 1 06-26-2008 10:54
Hjälp med min konstiga manus! kdyzsa Shell-programmering och Skript 1 06-15-2008 11:39
Konstiga sudo beteende geomonap UNIX för avancerade & Expertanvändare 1 02-03-2006 05:08
någon förklaring till detta shell script beteende xiamin Shell-programmering och Skript 9 11-09-2001 01:13
Konstiga script Duckman UNIX for Dummies Frågor & Svar 2 03-14-2001 01:53

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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 08-30-2008
Peetrus Peetrus is offline
Registered User
  
 

Join Date: Aug 2008
Inlägg: 2
Konstiga sed beteende i skriptet

Jag har skrivit ett litet skript för att byta ut vissa ord i alla filer i en katalog.


Kod:
#!/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

Nu, när jag kör det här scriptet som en normal användare, bara den första 4kB av ärendet har behandlats. Så alla filer som är större än 4kB halveras. De återstående bytes är precis utanför den nya filen. När jag körde skriptet som root, 8KB behandlades. Finns det något sätt att behandla hela filer?

När jag katt en stor textfil hela fil får skrivas ut på min skärm.

Tack på förhand.
  #2 (permalänk)  
Old 08-30-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.345
Inte läsa och skriva till samma fil och med hjälp av katt med sed är överflödig, ersätta dessa rader:


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

med:


Kod:
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"

Om du sed version stödjer-i flaggan kan du redigera filen på plats utan att använda en temporär fil.


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

Hälsningar

Senast redigerad av Franklin52; 08-30-2008 vid 08:52..
  #3 (permalänk)  
Old 08-30-2008
Peetrus Peetrus is offline
Registered User
  
 

Join Date: Aug 2008
Inlägg: 2
Tack. Det fungerar!
Closed Thread

Komihåglista

Taggar
katt, sed, skal

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 07:49.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0