J'ai 24 répertoires dans un répertoire spécifique (répertoire principal). Chaque répertoire contient un fichier texte nommé DATA.txt.
Je dois utiliser la commande grep pour extraire ci-dessous un modèle spécifique pour chaque fichier texte;
2* x = 3800689.6402 y = 882077.3636 z = 5028791.2953
2* x =
part est constante pour tout DATA.txt. Les autres nombres numériques sont variables. J'ai besoin d'extraire la ligne ci-dessus pour chaque fichier DATA.txt et de les enregistrer dans un autre fichier texte. Quel script je peux utiliser pour ce processus?
Pour effectuer une recherche récursive à l'aide de grep
name__, utilisez l'option -R
.
Pour rechercher une chaîne exacte, utilisez -F
, afin que 2*
ne soit pas traité comme une expression régulière.
Pour rechercher uniquement des noms de fichiers spécifiques, utilisez l'option --include
. Combiné:
grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
Puisque vous connaissez le nom des fichiers cibles, vous pouvez aussi faire
grep '^2\* x' */DATA.txt > newfile
Ou, avec awk
:
awk '^/2\* x/' */DATA.txt > newfile
Et Perl:
Perl -ne 'print if /2\* x/' */DATA.txt > newfile
Approche générale:
grep -r <pattern>
ou
approche spécifique:
find -name <file patterns which you want to find> | xargs grep <pattern you looking for>