Le projet GNU publie tous les mois une liste de versions logicielles publiées. Jetons‐y un coup d’œil pour découvrir de nouveaux logiciels inconnus (de moi), des infâmes bogues disparus ou les promesses de solutions à tous nos besoins : soit des dizaines de nouvelles versions annoncées allant de la corrective mineure à la version attendue depuis des années ; et l’on va donc parler de acct
, auctex
, automake
, binutils
, cgicc
, dr-geo
, freeipmi
, gama
, gcc
, gdb
, glpk
, gnuastro
, gnucash
, gnuhealth
, gnuhealth-control
, gnupg
, gnutls
, grep
, gsl
, guile-cv
, guile-gnome
, libextractor
, libffcall
, libgcrypt
, libidn2
, libmicrohttpd
, libtasn1
, linux-libre
, moe
, motti
, nano
, parallel
, screen
, taler
, texinfo
, tramp
et unifont
.
Journal Parce que ca vaut largement un journal ...
Voici le fruit de la réflexion de ce midi.
Il est important d'optimiser son environnement de travail, pour cela quoi de mieux qu'un environnement dynamique invitant à toujours se remettre en question.
Nous avons combiné l'outil idéal permettant cette joie qu'amène le renouveau :
Bon week-end à tous !
alias grep='GREP_COLOR=`python -c "import random; print random.randint(31, 36)"` grep --color=auto'
Travailler avec des expressions rationnelles
Les expressions rationnelles sont un outil d’analyse de texte par un ordinateur. Elles permettent de décrire des enchaînements de caractères d’une complexité suffisamment grande pour être réellement utiles, mais suffisamment faible pour être implémentées efficacement. Elles sont d’une importance capitale pour le théoricien des langages comme pour l’UNIX power user.
Dans cette dépêche, nous :
- décrivons brièvement la notion abstraite d’expression rationnelle et recensons les implémentations les plus courantes sur un système Unix ;
- présentons quelques commandes permettant de rechercher des motifs décrits par une expression rationnelle dans un texte, réécrire des fichiers automatiquement ou transformer et analyser des fichiers structurés automatiquement en utilisant des expressions rationnelles ;
- montrons comment améliorer votre productivité avec Emacs grâce aux expressions rationnelles.
Dans cette dépêche, nous allons nous pencher sur les expressions rationnelles (souvent nommées abusivement expressions régulières suite à une traduction littérale de regular expression). Elles permettent de représenter formellement un motif de recherche, par exemple : un caractère alphabétique majuscule suivi de quatre caractères minuscules, puis deux chiffres et un point à la fin. Les expressions rationnelles représentent un outil puissant pour qui sait les utiliser à bon escient mais nécessitent une phase d’apprentissage non négligeable. La diversité des moteurs et des syntaxes n’aide pas non plus à leur simplicité, et les confusions entre les différents outils peuvent parfois donner des résultats surprenants.
Forum Programmation.shell combine grep and sed in one command
Forum Linux.redhat Trouver source d'un log
Bonjour,
Je viens de commencer dans une très grande entreprise française connu.
Ils ont développé leur propre outil de monitoring (type Nagios).
Cependant plusieurs personnes se sont relayés sur ce développement, et l'organisation logique de certain script est devenu assez aléatoire …
Existe t-il une solution simple pour savoir quel script a généré mon log ?
je fais d'énorme find /data -name "*" -exec grep -Hn "nomdefichier" {} \;
en espérant trouver le fichier qui possède la ligne "> nomdefichier" dans (…)
Journal Vivent les journaux binaires !
Bonjour cher 'nal,
Comme toi, j'aime systemd, j'aime les jounaux binaires, j'aime la manière facile d'interroger le journal binaire, et j'aime que la machine travaille pour moi.
Faire des regex, c'est long, pas lisible, et chiant. La machine peut faire ça pour moi.
Chercher un symbole avec less, c'est pas pratique quand y'a des doublons.
grep n'est pas pratique sur un grand fichier, et multiplier les fichiers journaux c'est franchement pas génial pour avoir une organisation de ces fichiers bien (…)
ack 2.0
La commande ack
est un équivalent à grep
, optimisé pour parcourir les répertoires hétérogènes de code source. Par défaut, si aucun fichier n’est donné en paramètre, ack
parcourt le dossier courant.
Publiée sous Artistic License 2.0, les principales nouveautés de cette version 2 sont :
- Par défaut, et contrairement à la version 1.x, tous les fichiers, même ceux dont le type n’est pas connu, sont parcourus. Il est possible de revenir à l’ancien comportement avec l’option
-k
. - L’identification du type de fichier est améliorée, elle se base soit sur l’extension (
.rb
identifie un fichier de type Ruby), soit sur le nom (Rakefile
identifie un fichier de type Ruby), soit sur le contenu du fichier (/#!.+ruby/
dans la première ligne d’un fichier identifie également un fichier de type de Ruby). - Les fichiers de configuration sont plus granulaires :
/etc/ackrc
est global au système,~/.ackrc
est spécifique à l’utilisateur et l’on peut avoir un fichier spécifique au projet courant. - L’option
-x
dit àack
de parcourir la liste de fichiers envoyée viastdin
à la manière dexargs
, ce qui permet d’écrire des commandes du genregit ls|ack --type=cpp -x foo
.
Il est aussi possible d’écrire des greffons en Perl pour aller lire d’autres types de fichiers comme une archive ZIP ou un classeur ODF.
N. B. : Attention, sous Debian et Ubuntu, le logiciel s’appelle ack-grep
(ack
existant déjà). Le site officiel d’ack présente la méthode pour l’installer en tant que ack
, qui est plus propre que celle décrite dans la page de manuel du paquet ack-grep
(dans la dernière question de la FAQ).
Forum Programmation.shell substituer des termes d'un fichier par leurs numéros dans un autre fichier (grep,sed, awk,...)
Forum Programmation.shell Soustraire une liste de fichier à une autre liste
Bonjour,
Je suis en train d'écrire un script assez simple qui consiste à synchroniser sur mon téléphone Android des dossiers de toute natures avec rsync.
Rsync n'aime pas qu'on lui dise "prends ces fichiers là et ignore les autres", il préfère qu'on lui dise "prends tout les fichiers sauf ceux là", dans le premier cas on se retrouve avec un tas de problème, donc ce qu'il faut parvenir à faire c'est de lui donner une liste de tout les fichiers (…)
ack 1.96 — mieux que grep
Ack est un outil qui permet de rechercher du texte à l’intérieur de fichiers. C’est donc un clone de grep
avec quelques améliorations notables. Voici donc dix raisons de passer à ack
si vous utilisez grep
:
- ack est très rapide, car il ne recherche que ce que vous voulez chercher ;
- il recherche récursivement par défaut ;
- il ignore les trucs inutiles, comme les répertoires utilisés par les [VCS], les fichiers de sauvegarde (
« foo~ »
et« #foo# »
), les binaires, etc. ; - vous pouvez spécifier simplement le type de fichiers à rechercher, comme
« --perl »
ou« --nohtml »
; - la coloration syntaxique des résultats est là par défaut ;
- vous pouvez utiliser les expressions régulières de Perl, pas juste le sous‐ensemble de GNU ;
- l’apprentissage d’ack est très simple, car il reprend les mêmes options en ligne de commande que grep (
« -c »
,« -l »
,« -w »
, etc.) ; - il est possible d’avoir des options par défaut dans un fichier
« ~/.ackrc »
; - la commande fait 25 % de caractères en moins à taper ;
- en fait, c’est même 50 % de gagné par rapport à
« grep -r »
.
La version 1.96 d’ack est sortie dimanche et apporte quelques améliorations notables :
- les fichiers JavaScript « minifiés » sont ignorés par défaut ;
- le langage Groovy est supporté (extensions :
« .groovy », « .gtmpl », « .gpp », « .grunit »
) ; - les fichiers Perl et Lua sont mieux détectés.
Note : pour installer ack
sur Debian et Ubuntu, il faut faire un « apt-get install ack-grep »
(et pas juste « ack »). En revanche sous Archlinux, un « pacman -S ack »
sera suffisant. Les autres distributions (Fedora, Gentoo) utilisent également le simple nom « ack »
).
Coccigrep, un grep sémantique pour le langage C basé sur Coccinelle
Lorsque l'on travaille sur un projet C comportant un certain nombre de fichiers et de lignes de code, il arrive fréquemment que l'on se pose des questions comme "Mais où est modifié le champ data de ma structure Packet ?". grep ne suffit pas pour répondre à ce genre de questions car ne comprenant pas C, il ne sait pas, par exemple, que la variable monbopkt est une structure Packet.
coccigrep, basé sur coccinelle qui est un outil très puissant de recherche et de modification automatique de code, est un logiciel libre chargé de répondre à ce genre de questions. Il vient d'être publié en version 1.0rc1, sous licence GPL v3. Il est écrit en Python et s'interface avec les éditeurs Vim et Emacs, ce qui permet de faire les recherches depuis l'éditeur.