2010-02-24 6 views
1

J'écris un script shell qui ouvre un fichier et doit trouver un tag comme ## FIND_ME ##. La chaîne que je recherche est une constante (et il n'y en a qu'une seule instance.)Script shell, fichier de recherche pour chaîne

Une fois que je trouve cette chaîne, j'en ai besoin pour lancer une nouvelle recherche d'une chaîne différente à partir de ce point.

Mes compétences * nix sont un peu rouillées, vous devriez essayer de l'implémenter avec grep, awk ou sed?

+0

Qu'est-ce que vous êtes censé être faire lorsque vous trouvez l'étiquette? Je le ferais moi-même avec un script Perl rapide, mais ensuite je suis vraiment le hacker Perl. – crazyscot

Répondre

3
awk '/FINDME/{f=1}f&&/NEWSEARCH/{print}' file 

shell

f=0 
while read -r line 
do 
case "$line" in 
    *FINDME*) f=1;; 
esac 
if [ "$f" -eq 1 ] ;then 
    case "$line" in 
     *NEWSEARCH*) echo "found next tag in: $line";; 
    esac 
fi 
done <"file" 
+0

C'est exactement ce que je cherchais, merci pour votre aide. – pws5068