Éditeur Shell-sed

Un, sed

1. Présentation de sed

L'éditeur sed peut traiter les données du flux de données en fonction de commandes, qui sont soit entrées à partir de la ligne de commande, soit stockées dans un fichier texte de commande.

2. Flux de travail

Le workflow de sed comprend principalement trois processus de lecture, d'exécution et d'affichage:

  • 1. Lire: sed lit une ligne de contenu à partir du flux d'entrée (fichier, tube, entrée standard) et la stocke dans un tampon temporaire (également appelé espace de motif)
  • 2. Exécution: Par défaut, toutes les commandes sed sont exécutées séquentiellement dans l'espace des motifs. Sauf si l'adresse de la ligne est spécifiée, la commande sed sera exécutée séquentiellement sur toutes les lignes.
  • 3. Affichage: envoyez le contenu modifié vers le flux de sortie. Après l'envoi des données, l'espace de motif sera vidé. Avant que tout le contenu du fichier ne soit traité, le processus ci-dessus sera répété jusqu'à ce que tout le contenu soit traité.

Avant que tout le contenu du fichier ne soit traité, le processus ci-dessus sera répété jusqu'à ce que tout le contenu soit traité.
Remarque: Par défaut, toutes les commandes sed sont exécutées dans l'espace de motif, de sorte que le fichier d'entrée ne changera en aucune façon, à moins que la redirection ne soit utilisée pour stocker la sortie.

3. Format de commande

sed -e '格式' 文件1 文件2 ...
sed -n -e ‘操作’ 文件1 文件2 ...
sed -f 脚本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...

sed -e ' n {
操作1
操作2
...
} ' 文件1 文件2

4. Options courantes

-e ou - expression =: indique que la commande spécifiée est utilisée pour traiter le fichier texte d'entrée. Lorsqu'il n'y a qu'une seule commande d'opération, elle peut être omise. Généralement, lors de l'exécution de plusieurs commandes d'opération, utilisez
-f ou - fichier =: Indique que le fichier de script spécifié est utilisé. Traite le fichier de texte d'entrée.
-h ou - help: affiche l'aide.
-n, - quiet or silent: Désactive la sortie de l'éditeur sed, mais peut être utilisée avec la commande p pour terminer la sortie.
-i: modifie directement le fichier texte cible.

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

5. Opérations communes

s: Remplacez, remplacez le caractère spécifié.
d: Supprimer, supprimer la ligne sélectionnée.
a: Augmentez, ajoutez une ligne de contenu spécifié sous la ligne actuelle.
i: Insérer, insérer une ligne de contenu spécifié sur la ligne sélectionnée.
c: Remplacez, remplacez la ligne sélectionnée par le contenu spécifié.
y: conversion de caractères, la longueur des caractères avant et après la conversion doit être la même.
p: Imprimer, si vous spécifiez une ligne en même temps, cela signifie imprimer la ligne spécifiée; si vous ne spécifiez pas de ligne, cela signifie imprimer tout le contenu; s'il y a des caractères non imprimables, il sera imprimé en code ASCII. Il est généralement utilisé avec l'option "-n".
=: Imprimer le numéro de ligne.
l (L minuscule): imprime le texte dans le flux de données et les caractères ASCII non imprimables (comme le terminateur $, le caractère de tabulation \ t)
Insérez la description de l'image ici

sed -n '=' 1.txt        #显示行号

Insérez la description de l'image ici

sed -n 'l' 1.txt      #l (小写L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

Insérez la description de l'image ici

6. Utilisez l'adresse pour trouver

L'éditeur sed dispose de 2 modes d'adressage:
1. Exprimez l'intervalle de ligne sous forme numérique

sed -n '1p' 1.txt         #显示第1行内容
sed -n '$p' 1.txt         #显示最后一行内容
sed -n '1,3p' 1.txt       #显示第1行到第3行内容
sed -n '3,$p' 1.txt       #显示第3行到最后一行内容
sed -n '3,+3p' 1.txt      #显示第3行加3行内容
sed -n 'p;n' 1.txt        #显示奇数行内容
sed -n 'n;p' 1.txt        #显示偶数行内容

Insérez la description de l'image ici
Insérez la description de l'image ici
2. Utilisez le mode texte pour filtrer les voyages

sed -n ' /user/p' /etc/passwd        #//显示user的行进行打印,区分大小写
sed -n ' /^a/p' /etc/passwd          #显示以a开头的行进行打印
sed -n '/bash$/p' /etc/passwd        #显示bash结尾的行
sed -n '/ftp\|root/p' /etc/passwd    #显示包含ftp或者root的行
sed -n '2,/nobody/p' /etc/passwd     #从第二行开始打印到包含nobody的行
sed -nr '/ro{1,}t/p' /etc/passwd     #-r表示支持正则表达式

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

7, supprimer des lignes

sed 'd' 1.txt                      #不指定行号,全部删除
sed '2d' 1.txt                     #删除第三行
sed '2,4d' 1.txt                 #删除2-4行
sed '/^$/d' 1.txt                #删除空行
sed '/nologin$/d' /etc/passwd      #删除包含nologin字符的行
sed '/nologin$/!d' /etc/passwd     #不删除包含nologin的行
sed '/o/,/f/d' 1.txt

Insérez la description de l'image ici

Insérez la description de l'image ici

8. Remplacez

行范围 s/旧字符 /新字符 /替换标记

4 types de marques de remplacement
Nombre: indique que la nouvelle chaîne de caractères remplacera la place correspondante
g: indique que le nouveau caractère remplacera toutes les places correspondantes
p: imprime la ligne correspondant à la commande de remplacement, utilise avec -n
w fichier: replace Ecris le résultats dans un fichier

sed -n 's/root/admin/p' /etc/passwd    #将匹配行的第一个root更改为admin
sed -n 's/root/admin/2p' /etc/passwd   #将匹配行的第二个root更改为admin
sed -n 's/root/admin/gp' /etc/passwd   #将匹配行的所有root更改为admin 
sed '1,20 s/^/#/' /etc/passwd          #1-20行行首添加#号
sed '/^root/ s/$/#/' /etc/passwd       #在以root开头的行,行尾添加#号
sed -f 1.sed 1.txt                     #-f以指定的脚本文件来处理输入文件
sed '1,3w out.txt' 1.txt
sed -n 's/\/bin\/bash/\/bin\/srs/p' /etc/passwd

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

9. Insérer

sed '/2/two 2' 1.txt  #将含有two的行,替换为2
sed '1,2a 2' 1.txt   #在第一行到第二行,行下插入2
sed '5r /etc/resolv.conf' 1.txt  #在第五行后导入该文件内容
sed '/two/{H;d};$G' 1.txt	#将包含root的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/s15212790607/article/details/114739059
conseillé
Classement