Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
bash_base_4 [2021/07/22 16:36] – créée nekanbash_base_4 [2022/06/13 15:24] (Version actuelle) nekan
Ligne 22: Ligne 22:
 |  ''${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}
Ligne 38: Ligne 38:
 |  ''${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>|
Ligne 47: Ligne 47:
 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~~
  • bash_base_4.1626964600.txt.gz
  • Dernière modification : 2021/07/22 16:36
  • de nekan