| Prochaine révision | Révision précédente |
| bash_base_4 [2021/07/22 16:36] – créée nekan | bash_base_4 [2022/06/13 15:24] (Version actuelle) – nekan |
|---|
| | ''${TEXT,,}'' |Mise en minuscule. |<sxh bash>echo ${TEXT,,} | | ''${TEXT,,}'' |Mise en minuscule. |<sxh bash>echo ${TEXT,,} |
| chaîne</sxh>| | chaîne</sxh>| |
| | ''${TEXT: +n}'' |Récupère les n premiers caractères. |<sxh bash>echo ${TEXT: +2} | | ''${TEXT: +n}'' |Supprime les n premiers caractères. |<sxh bash>echo ${TEXT: +2} |
| Ch</sxh>| | Ch</sxh>| |
| | ''${TEXT:: +n}'' |Supprime les n premiers caractères. |<sxh bash>echo ${TEXT:: +2} | | ''${TEXT:: +n}'' |Récupère les n premiers caractères. |<sxh bash>echo ${TEXT:: +2} |
| aîne</sxh>| | aîne</sxh>| |
| | ''${TEXT: -n}'' |Récupère les n derniers caractères. |<sxh bash>echo ${TEXT: -2} | | ''${TEXT: -n}'' |Récupère les n derniers caractères. |<sxh bash>echo ${TEXT: -2} |
| | ''${TEXT/abc/xyz}'' |Remplace la première occurrence de ''abc'' par ''xyz''. |<sxh bash>echo ${TEXT/aî/i} | | ''${TEXT/abc/xyz}'' |Remplace la première occurrence de ''abc'' par ''xyz''. |<sxh bash>echo ${TEXT/aî/i} |
| Chine</sxh>| | Chine</sxh>| |
| | ''${TEXT//abc/xyz}'' |Remplace toutes les occurrences de ''abc'' par ''xyz''. |<sxh bash>TEXT="Toto" | | ''${TEXT%%//%%abc/xyz}'' |Remplace toutes les occurrences de ''abc'' par ''xyz''. |<sxh bash>TEXT="Toto" |
| echo ${TEXT//o/i} | echo ${TEXT//o/i} |
| Titi</sxh>| | Titi</sxh>| |
| echo ${TEXT/%a/o} | echo ${TEXT/%a/o} |
| anno</sxh>| | anno</sxh>| |
| | | ''${TEXT<nowiki>%%[[</nowiki>:cntrl:]]}'' |Supprime les caractères de contrôle en fin de chaîne. |<sxh bash>TEXT="Test\r\n" |
| | echo ${TEXT%%[[:cntrl:]]} |
| | Test</sxh>| |
| | |||| |
| |
| ===== awk ===== | ===== La commande awk ===== |
| |
| * Référence : [[https://man7.org/linux/man-pages/man1/awk.1p.html|Manuel de la commande awk]] | * Référence : [[https://man7.org/linux/man-pages/man1/awk.1p.html|Manuel de la commande awk]] |
| |
| ''awk'' est un puissant utilitaire permettant entre autre la manipulation de texte. Voici quelques exemples | ''awk'' est un puissant utilitaire permettant la manipulation de texte dans une chaîne de caractère et/ou dans un fichier texte. Avant de commencer à utiliser ''awk'', il faut connaître quelques points importants : |
| | * ''awk'' manipule des champs de texte et non des caractères. |
| | * Le séparateur de champs par défaut est un espace vide pouvant être un espace simple, multiple, une tabulation et/ou un retour à la ligne. |
| | * ''awk'' est un interpréteur de commandes. Son utilisation sera toujours de type ''awk '//script//%%'%%''. |
| | * Chaque champ est défini par le caratère ''$'' et numéroté à partir de 1. Ainsi, le premier champs est ''$1'', le second ''$2'', etc... Le champ ''$0'' correspond alors à la ligne complète. |
| | * Utilisé pour délimité le script interprété par ''awk'', Le caractère ''%%'%%'' ne peux être utilisé directement dans ce dernier. Pour l'utiliser, il on peux utilisé la chaîne ''"'"'"'"'' ou bien ''"\047"''. |
| |
| | Quelques exemple de commandes avec ''awk'' : |
| | |
| | |< 100% 50% 50% >| |
| | ^ Manipulation ^ Syntaxe et exemple ^ |
| | |Afficher le 2<sup>ème</sup> champ. |<sxh bash>echo "a b c d" | awk '{print $2}' |
| | b</sxh>| |
| | |Afficher les 2<sup>èmes</sup> et 4<sup>èmes</sup> champs. **Attention** : Les champs sont ainsi affichés sans séparateur de champs. |<sxh bash>echo "a b c d" | awk '{print $2 $3}' |
| | bd</sxh>| |
| | |Afficher le 2<sup>ème</sup> puis le 1<sup>er</sup> et enfin le 3<sup>ème</sup> champ. **Attention** : Les champs sont ainsi affichés sans séparateur de champs. |<sxh bash>echo "a b c d" | awk '{print $2 $1 $3}' |
| | bac</sxh>| |
| | |Afficher le 2<sup>ème</sup> champ puis le 1<sup>er</sup> en les séparant par le caractère ''-''. |<sxh bash>echo "a b c d" | awk '{print $2 "-" $1}' |
| | b-a</sxh>| |
| | |Afficher le dernier champ. |<sxh bash>echo "a b c d" | awk '{print $NF}' |
| | d</sxh>| |
| | |Afficher l'avant-dernier champ. |<sxh bash>echo "a b c d" | awk '{print $(NF-1)}' |
| | c</sxh>| |
| | |Afficher le 2<sup>ème</sup> champ en définissant le séparateur de champ comme étant le caractère '';''. |<sxh bash># Ecriture principale |
| | echo "a b;c d" | awk 'BEGIN { FS = ";" } ; {print $2}' |
| | c d |
| | # Autre écriture possible |
| | echo "a b;c d" | awk -F ";" '{print $2}' |
| | c d</sxh>| |
| | |Afficher le 2<sup>ème</sup> caractère. En définissant le séparateur de champ par une chaîne vide, chaque caractère est alors défini comme un champ séparé des autres. |<sxh bash>echo "ab;cd" | awk 'BEGIN { FS = "" } ; {print $2}' |
| | b</sxh>| |
| | |
| | Des exemples bien plus complexes sont disponibles sur les sites suivants : |
| | * [[https://sites.google.com/site/diezone/awk-1/bou|getimax]] |
| | * [[http://www.bruno-garcia.net/www/Unix/Docs/awk.html|Site de Bruno GARCIA]] |
| | |
| | ===== La commande sed ===== |
| | |
| | * [[http://manpagesfr.free.fr/man/man1/sed.1.html|Manuel de la commande sed]] |
| | |
| | ''sed'' est un autre utilitaire de manipulation de chaîne de caractère et/ou de fichier texte. |
| | |
| | Quelques exemple de commandes avec ''sed'' : |
| | |
| | |< 100% 70% 30% >| |
| | ^ Manipulation ^ Syntaxe et exemple ^ |
| | |Remplace toutes les occurrences du texte ''abc'' par ''xyz'' dans le fichier //file.txt//. |<sxh bash>sed -i 's/abc/xyz/g' file.txt</sxh>| |
| | |Commente toutes les lignes d'un fichier. |<sxh bash>sed -i 's/^/#/g' file.txt</sxh>| |
| | |Décommente toutes les lignes d'un fichier. |<sxh bash>sed -i 's/^#//g' file.txt</sxh>| |
| | |
| | |
| | ---- |
| | |
| | |
| | ~~DISCUSSION~~ |