2009-11-22 7 views
4

J'ai un fichier texte avec une ligneRemplacer une ligne dans un fichier texte

default_color acolor 

et je veux remplacer cette ligne avec

default_color anothercolor 

Je ne sais pas la première couleur et le second est contenu dans une variable. Comment puis-je le faire dans bash?

Merci

Répondre

7

Il est pas pur bash mais si vous avez d'autres outils de la console, essayez quelque chose comme

cat your_file | sed "s/default_color\ .*/default_color\ $VAR/" 
+6

Pourquoi chattez-vous? Juste sed. – ustun

+0

ça marche! merci Je viens d'utiliser "sed" s/default_color \. */default_color \ $ VAR/"fichier> nouveau fichier" –

+1

Vous n'avez pas besoin de la redirection si vous voulez changer le fichier; utilisez l'option -i pour cela. – ustun

0

Vous pouvez utiliser awk. La saisie manuelle est ici:

http://ss64.com/bash/awk.html

Je ne vais pas écrire l'expression régulière nécessaire, car cela dépendra de votre format de couleur, mais ce sera parfait. Bonne chance.

0

utilisation gawk

awk '$2=="defaultcolor"{$2="anothercolor"}1' file 

ou tout simplement shell bash et aucune commande externes

while read -r line 
do 
case "$line" in 
    *defaultcolor*) line=${line/defaultcolor/anothercolor} 
esac 
echo $line 
done <"file" 
-1

Pas vraiment une solution bash, mais vous pouvez faire le remplacement en place, pour un certain nombre de fichiers, avec perl:

 
perl -i -npe 's/default_color acolor/default_color another_color/' list_of_files 
Questions connexes