|
|
macro processeur malconnu 09/01/2022
vi et plus 11/10/2021
ocr 17/10/2022
virer les metadata 26/06/2023
recupere la date 05/01/2024
divers 26/06/2023
|
|
m4
alors qu'il est installé sur TOUT les linux
http://www.gnu.org/software/m4
surprenant et addictif
les fins de lignes, espaces ou cotes sont traitées comme n'importe quel caractère
séparateur de champs "," (virgule /!\ les espaces qui suivent sont ignorées)
seule protection (optonelle) `.....' ( accent grave ..... simple quote )
pour éviter de tapper plusieurs fois la même chose
définir une macro:
define(toto,sdfqsdfqsdfqsdfqsdfqsdfq)
une macro doit commencer par une lettre et n'est pas reconnue si collée à un caractère
ifdef(`toto',toto,macro toto inconnue) obligation de proteger le premier toto
les noms de macros doivent commencer par une lettre
syscmd(commande shell)
sysval code retour du dernier syscmd()
ifelse(sysval, 0, OK,NOK) # avec un seul parametre eq commentaire
pour que le retour de la commande soit traité il faut utiliser esyscmd
la commande `m4exit' doit être protégé
sinon elle sort même dans une définition ou une partie négative d'un test
|
|
outre l'éditeur de texte frugal et puissant, deux extention interessantes:
vimdiff
vimdot
|
|
# OCR issu d'un programme HP libéré en 2005 après la bataille
# il faut obligatoirement indiquer un nom de fichier destination
# auquel sera ajouté .txt
tesseract -l fra fichier_image.png nom_texte
|
|
# virer les metadata
mat2 (dans les dépots) copy par exemple fichier.png en fichier.cleaned.png.
|
|
DP="$(exif -t 0x0132 fichier_photo.jpg | awk '$1 == "Value:" {print $2 "_" $3}' | tr : - | cut -c-12)"
test "$DP" && touch -t $DP fichier_photo.jpg
|
|
/*
* tentative de fusionner deux version d'un même fichier en cours de chargement par exemple via torrent
* en remplaçant les "zeros binaires" du premier par l'octet à la même place du second
* il manque la vérification de l'égalité des octets non nuls
*/
#include <stdio.h>
int main(argc,argv)
int argc;
char *argv[];
{
FILE *f,*g;
int c,d;
if (argc < 3)
printf("il faut deux fichiers en arguments\n");
else {
f=fopen(argv[1],"r"); g=fopen(argv[2],"r");
while ((c=getc(f)) != EOF && (d=getc(g)) != EOF)
if (c != 0) putchar(c); else putchar(d);
fclose(f); fclose(g);
}
}
#! /bin/bash
# pour passer les filtres remplace l'alphabet ASCII par des caractère semblables
# la commande tr ne fonctionne pas
for i in $*; do test -f "$i" || exec echo "$0 : $i n'est pas un fichier"; done
cat $* | sed \
-e 's/A/A/g' \
-e 's/B/B/g' \
-e 's/C/C/g' \
-e 's/D/D/g' \
-e 's/E/E/g' \
-e 's/F/F/g' \
-e 's/G/G/g' \
-e 's/H/H/g' \
-e 's/I/I/g' \
-e 's/J/J/g' \
-e 's/K/K/g' \
-e 's/L/L/g' \
-e 's/M/M/g' \
-e 's/N/N/g' \
-e 's/O/O/g' \
-e 's/P/P/g' \
-e 's/Q/Q/g' \
-e 's/R/R/g' \
-e 's/S/S/g' \
-e 's/T/T/g' \
-e 's/U/U/g' \
-e 's/V/V/g' \
-e 's/W/W/g' \
-e 's/X/X/g' \
-e 's/Y/Y/g' \
-e 's/Z/Z/g' \
-e 's/a/a/g' \
-e 's/b/b/g' \
-e 's/c/c/g' \
-e 's/d/d/g' \
-e 's/e/e/g' \
-e 's/f/f/g' \
-e 's/g/g/g' \
-e 's/h/h/g' \
-e 's/i/i/g' \
-e 's/j/j/g' \
-e 's/k/k/g' \
-e 's/l/l/g' \
-e 's/m/m/g' \
-e 's/n/n/g' \
-e 's/o/o/g' \
-e 's/p/p/g' \
-e 's/q/q/g' \
-e 's/r/r/g' \
-e 's/s/s/g' \
-e 's/t/t/g' \
-e 's/u/u/g' \
-e 's/v/v/g' \
-e 's/w/w/g' \
-e 's/x/x/g' \
-e 's/y/y/g' \
-e 's/z/z/g'
|