Résumé de l'utilisation de la commande sed sous Linux
Commande Sed sous Linux :
1 Première introduction à sed
L'éditeur sed est appelé éditeur de flux, ce qui est différent des éditeurs de texte interactifs tels que vim , qui traite les données du flux de données en fonction des commandes. Les opérations suivantes seront effectuées :
Lire une ligne de données de l'entrée à la fois (répétez cette opération jusqu'à ce que toutes les lignes aient été lues)
Match les données selon la commande de l'éditeur
Modifier le données dans le flux de données selon la commande Data
Sortir de nouvelles données vers STDOUT (sortie standard)
La commande sed peut être saisie à partir de la ligne de commande ou lue à partir d'un fichier de commande.
sed -e script 添加script中指定的命令 sed -f file 添加file中指定的命令
1.1 Définissez la commande sed sur la ligne de commande [Apprentissage recommandé : Tutoriel vidéo Linux]
Jetons un coup d'œil à un exemple simple de remplacement de texte :
echo "hi,my name is xxx" | sed 's/xxx/kinsomy/' #修改文件 sed 's/xxx/kinsomy/' data.txt #执行多个命令 用-e选项,分号隔开 sed 's/xxx/kinsomy/; s/***/hhh/' data.txt
Entrez les données de sortie d'écho dans sed via le canal, et puis utilisez la commande s Remplacer, remplacez les données correspondantes après la première barre oblique par les données après la deuxième barre oblique.
Remarque : sed exploite les données dans le fichier texte et génère uniquement les données modifiées vers STDOUT, mais ne modifie pas les données du fichier lui-même
1.2 La commande de lecture à partir du fichier
est définie dans un script de fichier.sed Une série de commandes pour une réutilisation facile.
s/*/a s/x/b s/-/+
# -f选项指定命令文件 sed -f script.sed data.txt
2 les bases de sed
2.1 Balises de remplacement
L'exemple ci-dessus echo "salut, mon nom est xxx" | sed 's/xxx/kinsomy/' ne remplacera que le premier caractère correspondant dans chaque ligne de données, mais s'il existe plusieurs correspondances dans une ligne de données, elles ne peuvent pas toutes être remplacées.
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/' #输出 hi,my name is kinsomy, i am xxx
À ce stade, vous pouvez utiliser certains indicateurs de substitution pour définir le mode de substitution. Le jeton de remplacement suit la chaîne de remplacement.
s/pattern/replacement/flags
Numéro indiquant à quelle donnée correspondante sera remplacée
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2' #输出 第二个xxx被替换成kinsomy hi,my name is xxx, i am kinsomy
g, indiquant le remplacement de toutes les données correspondantes
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g' #输出 第二个xxx被替换成kinsomy hi,my name is kinsomy, i am kinsomy
p, indiquant que les lignes correspondantes seront imprimées
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p' #输出 hi,my name is kinsomy, i am xxx hi,my name is kinsomy, i am xxx
w,将替换后输出保存到指定文件 echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'
2.3 Adressage de ligne
Comme mentionné ci-dessus, la commande sed lit le texte ligne par ligne et fait correspondre les données jusqu'à ce que toutes les lignes aient été parcourues. Si nous voulons opérer sur une ligne spécifique à ce moment-là, nous devons utiliser la ligne Adressage. Il existe deux formes d'adressage de ligne :
La forme numérique représente la ligne
# 操作单行 $ sed '2s/xxx/***/' data.txt # 操作一定行区间[2,4] $ sed '2,4s/xxx/***/' data.txt # 操作某行开始到最后[2,endline] $ sed '2,$s/xxx/***/' data.txt
Filtre en mode texte
Recherchez d'abord l'enregistrement de kinsomy dans /etc/passwd, puis remplacez bash par csh. Les filtres de modèles de texte peuvent être très puissants lorsqu'ils sont associés à des expressions régulières.
sed '/kinsomy/s/bash/csh/' /etc/passwd
2.4 Supprimer des lignes
Utilisez la commande de suppression d pour supprimer le texte.
# 删除所有文本 sed 'd' data.txt # 删除单行 sed '2d' data.txt # 删除行区间[2,3] sed '2,3d' data.txt # 删除行区间[2,endline] sed '2,$d' data.txt # 删除匹配文本aa的行 sed '/aa/d' data.txt # 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除 sed '/1/,/3/d' data.txt
2.5 Insérer et ajouter du texte
La commande Insérer i ajoute une nouvelle ligne avant la ligne spécifiée
La commande Append a ajoute une nouvelle ligne après la ligne spécifiée
# 追加 echo "Line 2" | sed 'a\ pipe quote> Line 1' #插入 echo "Line 2" | sed 'i\ pipe quote> Line 1'
2.6 Modifier la ligne
La commande c est utilisée pour modifier une ligne de données
# 修改第三行文本 sed '3c\ pipe quote> change line ' data.txt
2.7 Commande de conversion
Format de commande sed 'y/inchar/outchar'
Convertissez les caractères inchar en caractères outchar un par un
echo "This 1 is a test of 1 try." | sed 'y/123/456/' # 输出 This 4 is a test of 4 try.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!