Maison > Opération et maintenance > exploitation et maintenance Linux > Résumer l'utilisation de la commande sed sous Linux

Résumer l'utilisation de la commande sed sous Linux

藏色散人
Libérer: 2021-11-15 15:55:00
avant
2533 Les gens l'ont consulté

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中指定的命令
Copier après la connexion

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
Copier après la connexion

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/-/+
Copier après la connexion

# -f选项指定命令文件
sed -f script.sed data.txt
Copier après la connexion

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
Copier après la connexion

À 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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion
w,将替换后输出保存到指定文件
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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'
Copier après la connexion

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
Copier après la connexion

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.
Copier après la connexion

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!

Étiquettes associées:
source:juejin.im
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal