LFCS Comment utiliser la commande GNU 'SED' pour créer, modifier et manipuler des fichiers dans Linux - partie 1

LFCS Comment utiliser la commande GNU 'SED' pour créer, modifier et manipuler des fichiers dans Linux - partie 1

La Fondation Linux a annoncé le LFC (Sysadmin certifié de la Fondation Linux) Certification, un nouveau programme qui vise à aider les individus du monde entier à obtenir des tâches de base d'administration des systèmes de base pour les systèmes Linux. Cela comprend le soutien aux systèmes et services de course, ainsi que le dépannage et l'analyse de première main, et la prise de décision intelligente pour augmenter les problèmes aux équipes d'ingénierie.

Sysadmin certifié de la Fondation Linux - Partie 1

Veuillez regarder la vidéo suivante qui montre le programme de certification de la Fondation Linux.

La série sera intitulée Préparation pour le LFC (Sysadmin certifié de la Fondation Linux) Les pièces 1 à travers dix et couvrir les sujets suivants pour Ubuntu, Centos et OpenSUSE:

Partie 1: Comment utiliser la commande GNU 'SED' pour créer, modifier et manipuler des fichiers dans Linux Partie 2: Comment installer et utiliser VI / M comme éditeur de texte intégral Partie 3: Archiver des fichiers / répertoires et trouver des fichiers sur le système de fichiers Partie 4: Partionnement des périphériques de stockage, formatage des systèmes de fichiers et configuration de la partition d'échange Partie 5: Mount / Décourtez les systèmes de fichiers locaux et réseau (Samba & NFS) dans Linux Partie 6: Assemblage des partitions en tant que dispositifs RAID - Création et gestion des sauvegardes du système Partie 7: Gestion des processus et services de démarrage du système (Sysvinit, Systemd et UpStart Partie 8: Gérer les utilisateurs et les groupes, les autorisations et les attributs de fichiers et d'activer l'accès sudo sur les comptes Partie 9: Gestion des packages Linux avec Yum, RPM, APT, DPKG, aptitude et Zypper Partie 10: Apprendre le dépannage des shells de base et le dépannage du système de fichiers

Important: En raison des modifications des exigences de certification LFCS efficaces Fév. 2, 2016, Nous incluons les sujets nécessaires suivants à la série LFCS publiée ici. Pour préparer cet examen, vous êtes également très encouragés à utiliser la série LFCE.

Partie 11: Comment gérer et créer LVM à l'aide de commandes VGcreate, LVCreate et LVEXTEND Partie 12: Comment explorer Linux avec des documents et des outils d'aide installés Partie 13: Comment configurer et dépanner Grand Unified Bootloader (GRUB) Partie 14: Surveiller les processus Linux Utilisation des ressources et fixer des limites de processus sur une base par utilisateur Partie 15: Comment définir ou modifier les paramètres d'exécution du noyau dans les systèmes Linux Partie 16: Comment définir les listes de contrôle d'accès (ACL) et les quotas de disque pour les utilisateurs et les groupes Partie 17: Comment installer Cygwin, un environnement de ligne de commande de type Linux pour Windows Partie 18: Un guide ultime pour configurer le serveur FTP pour autoriser les connexions anonymes Partie 19: Configurer un serveur DNS de mise en cache récursif de base et configurer des zones pour le domaine Partie 20: Implémentation de contrôle d'accès obligatoire avec SELINUX ou Apparmor à Linux

Ce message fait partie 1 d'un Série de 20 tutoriels, qui couvrira les domaines et compétences nécessaires qui sont nécessaires pour le LFC examen de certification. Cela étant dit, lancez votre terminal et commençons.

Traitement des flux de texte dans Linux

Linux traite l'entrée et la sortie des programmes sous forme de flux (ou de séquences) de caractères. Pour commencer à comprendre la redirection et les tuyaux, nous devons d'abord comprendre les trois types les plus importants de flux d'E / S (entrée et sortie), qui sont en fait des fichiers spéciaux (par convention dans UNIX et Linux, des flux de données et des périphériques, ou des fichiers de périphérique, sont également traités comme des fichiers ordinaires).

La différence entre > (opérateur de redirection) et | (Opérateur de pipeline) est que, bien que la première connecte une commande à un fichier, ce dernier connecte la sortie d'une commande avec une autre commande.

# Command> Fichier # Command1 | Command2 

Étant donné que l'opérateur de redirection crée ou écrase les fichiers en silence, nous devons l'utiliser avec une extrême prudence et ne jamais le confondre avec un pipeline. Un avantage des tuyaux sur les systèmes Linux et Unix est qu'il n'y a pas de fichier intermédiaire impliqué dans un tuyau - le stdout de la première commande n'est pas écrit dans un fichier puis lu par la deuxième commande.

Pour les exercices de pratique suivants, nous utiliserons le poème «Un enfant heureux»(Auteur anonyme).

Exemple de commande de chat

En utilisant SED

Le nom sed est court pour l'éditeur de flux. Pour ceux qui ne connaissent pas le terme, un éditeur de flux est utilisé pour effectuer des transformations de texte de base sur un flux d'entrée (un fichier ou une entrée à partir d'un pipeline).

L'utilisation la plus fondamentale (et populaire) de SED est la substitution des personnages. Nous commencerons par changer chaque occurrence de la minuscule y en majuscules Y et rediriger la sortie vers ahappychild2.SMS. Le g Le drapeau indique que SED doit effectuer la substitution de toutes les instances de terme sur chaque ligne de fichier. Si ce drapeau est omis, SED ne remplacera que la première occurrence de terme sur chaque ligne.

Syntaxe de base:
# fichier SED / Term / Replacement / Flag ' 
Notre exemple:
# SED 'S / Y / G' Ahappychild.txt> ahappychild2.SMS 
Exemple de commande SED

Si vous souhaitez rechercher ou remplacer un caractère spécial (comme / /, \, &) Vous devez y échapper, dans le terme ou les chaînes de remplacement, avec une barre arrière vers l'arrière.

Par exemple, nous remplacerons le mot et pour un ampère et. En même temps, nous remplacerons le mot je avec Toi Quand le premier se trouve au début d'une ligne.

# sed 's / et / \ & / g; s / ^ i / you / g' ahappychild.SMS 
SED Remplacer la chaîne

Dans la commande ci-dessus, un ^ (Caret Sign) est une expression régulière bien connue qui est utilisée pour représenter le début d'une ligne.

Comme vous pouvez le voir, nous pouvons combiner deux ou plusieurs commandes de substitution (et utiliser des expressions régulières à l'intérieur) en les séparant avec un point-virgule et en enfermant l'ensemble à l'intérieur des citations simples.

Une autre utilisation de SED montre (ou supprimer) une partie choisie d'un fichier. Dans l'exemple suivant, nous afficherons les 5 premières lignes de / var / log / messages du 8 juin.

# sed -n '/ ^ juin 8 / p' / var / log / messages | SED -N 1,5P 

Notez que par défaut, SED imprime chaque ligne. Nous pouvons remplacer ce comportement avec le -n option puis dire à sed d'imprimer (indiqué par p) Seule la partie du fichier (ou le tuyau) qui correspond au modèle (8 juin au début de la ligne dans le premier cas et les lignes 1 à 5 inclusives dans le deuxième cas).

Enfin, il peut être utile lors de l'inspection des scripts ou des fichiers de configuration pour inspecter le code lui-même et laisser de côté les commentaires. Les suppressions SED en une ligne suivantes (d) lignes vierges ou celles qui commencent par # (le | Le caractère indique un booléen ou entre les deux expressions régulières).

# sed '/ ^ # \ | ^ $ / d' apache2.confli 
SED Match String

Commande UNIQ

Le uniq La commande nous permet de signaler ou de supprimer les lignes en double dans un fichier, écrivant sur stdout par défaut. Nous devons noter que uniq ne détecte pas les lignes répétées à moins qu'elles ne soient adjacentes. Ainsi, uniq est couramment utilisé avec un précédent trier (qui est utilisé pour trier les lignes de fichiers texte). Par défaut, trier prend le premier champ (séparé par les espaces) comme champ clé. Pour spécifier un champ de clé différent, nous devons utiliser le -k option.

Exemples

Le du -sch / path / to / répertoire / * La commande renvoie l'utilisation de l'espace disque par sous-répertoires et fichiers dans le répertoire spécifié au format lisible par l'homme (affiche également un total par répertoire), et ne commande pas la sortie par taille, mais par sous-répertoire et nom de fichier. Nous pouvons utiliser la commande suivante pour trier par taille.

# du -sch / var / * | tri -h 
Trier l'exemple de commande

Vous pouvez compter le nombre d'événements dans un journal par date en disant uniq Pour effectuer la comparaison en utilisant les 6 premiers caractères (-w 6) de chaque ligne (où la date est spécifiée) et préfixant chaque ligne de sortie par le nombre d'occurrences (-c) avec la commande suivante.

# chat / var / log / courrier.Journal | Uniq -C -W 6 
Compter les numéros dans le fichier

Enfin, vous pouvez combiner trier et uniq (comme ils le sont habituellement). Considérez le fichier suivant avec une liste de donateurs, la date de don et le montant. Supposons que nous voulons savoir combien de donateurs uniques il y a. Nous utiliserons la commande suivante pour couper le premier champ (les champs sont délimités par un côlon), trier par nom et supprimer les lignes en double.

# Cat SortUniq.txt | Cut -d: -f1 | Trier | uniq 
Trouver des enregistrements uniques dans le fichier

Lire aussi: 13 Exemples de commande «Cat»

commande grep

grep recherche de fichiers texte ou (sortie de commande) pour la survenue d'une expression régulière spécifiée et publie toute ligne contenant une correspondance à la sortie standard.

Exemples

Afficher les informations de / etc / passwd pour l'utilisateur gacanepa, ignorer le cas.

# grep -i gacanepa / etc / passwd 
Exemple de commande grep

Montrer tout le contenu de /etc dont le nom commence par RC suivi par n'importe quel numéro unique.

# ls -l / etc | Grep RC [0-9] 
Liste du contenu à l'aide de Grep

Lire aussi: 12 exemples de commande «grep»

utilisation des commandes TR

Le tr La commande peut être utilisée pour traduire (modifier) ​​ou supprimer les caractères de STDIN, et écrire le résultat à Stdout.

Exemples

Changez toutes les minuscules en majuscules dans SORTUNIQ.fichier txt.

# Cat SortUniq.txt | tr [: inférieur:] [: supérieur:] 
Trier les chaînes dans le fichier

Presser le délimiteur dans la sortie de ls -l à un seul espace.

# ls -l | tr -s "
Rédacteur

Coupez l'utilisation de la commande

Le couper La commande extrait des parties des lignes d'entrée (à partir de stdin ou de fichiers) et affiche le résultat sur la sortie standard, en fonction du nombre d'octets (-b option), les caractères (-c), ou champs (-F). Dans ce dernier cas (sur la base des champs), le séparateur de champ par défaut est un onglet, mais un délimiteur différent peut être spécifié en utilisant le -d option.

Exemples

Extraire les comptes d'utilisateurs et les shells par défaut qui leur sont attribués à partir de / etc / passwd (le -d L'option nous permet de spécifier le délimiteur de champ et le -F Le commutateur indique quel champ (s) sera extrait.

# chat / etc / passwd | coupe -d: -f1,7 
Extraire les comptes d'utilisateurs

Résumé, nous créerons un flux de texte composé des premier et troisième fichiers non foncés de la sortie du dernier commande. Nous utiliserons grep comme premier filtre pour vérifier les séances de l'utilisateur gacanepa, puis pressez les délimiteurs à un seul espace (tr -s"). Ensuite, nous allons extraire les premier et troisième champs avec couper, et enfin trier par le deuxième champ (adresses IP dans ce cas) montrant unique.

# Dernier | gacanepa grep | tr -s "| Cut -d" -f1,3 | Triez -K2 | uniq 
Dernier exemple de commande

La commande ci-dessus montre comment plusieurs commandes et tuyaux peuvent être combinés afin d'obtenir des données filtrées en fonction de nos désirs. N'hésitez pas à l'exécuter également par des pièces, pour vous aider à voir la sortie qui est pipeline d'une commande à l'autre (cela peut être une excellente expérience d'apprentissage, au fait!).

Résumé

Bien que cet exemple (avec le reste des exemples du tutoriel actuel) puisse ne pas sembler très utile à première vue, ils sont un joli point de départ pour commencer à expérimenter avec des commandes qui sont utilisées pour créer, modifier et manipuler des fichiers du Linux ligne de commande. N'hésitez pas à laisser vos questions et commentaires ci-dessous - ils seront très appréciés!

Liens de référence
  1. À propos des LFC
  2. Pourquoi obtenir une certification de la Fondation Linux?
  3. Inscrivez-vous à l'examen LFCS
Devenir un administrateur système certifié Linux