Table des matières
Introduction" >Introduction
paramètres sed utilisés
Ajouter/supprimer dans les lignes
Rechercher et afficher des données
Rechercher et supprimer des données
Recherchez des données et exécutez la commande
数据的搜寻并替换
多点编辑
直接修改文件内容(危险动作)
Maison Opération et maintenance exploitation et maintenance Linux Explication détaillée de l'utilisation de sed

Explication détaillée de l'utilisation de sed

May 28, 2017 am 10:24 AM

Introduction

sed est un éditeur en ligne qui traite le contenu une ligne à la fois. Pendant le traitement, la ligne en cours de traitement est stockée dans un tampon temporaire, appelé « espace de modèle », puis la commande sed est utilisée pour traiter le contenu du tampon. Une fois le traitement terminé, le contenu du tampon est envoyé au tampon. écran. Traitez ensuite la ligne suivante et répétez jusqu'à la fin du fichier. Le contenu du fichier n'est pas modifié sauf si vous utilisez la redirection pour stocker la sortie. Sed est principalement utilisé pour éditer automatiquement un ou plusieurs fichiers ; simplifier les opérations répétées sur les fichiers ; écrire des programmes de conversion, etc.

paramètres sed utilisés


Explication détaillée de lutilisation de sed

[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
Copier après la connexion

Explication détaillée de lutilisation de sed

Ajouter/supprimer dans les lignes


will/ Le contenu de etc/passwd sont répertoriés et les numéros de ligne sont imprimés en même temps, veuillez supprimer les lignes 2 à 5 !


[root@www ~]# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.....(后面省略).....
Copier après la connexion



L'action de sed est '2,5d', c'est à dire la suppression ! Parce qu'il a supprimé les lignes 2 à 5, les données affichées n'incluent pas les lignes 2 à 5 ~ De plus, veuillez noter qu'à l'origine vous auriez dû émettre sed -e, mais cela fonctionnera sans -e ! Dans le même temps, il convient également de noter que les actions qui suivent sed doivent être entourées de deux guillemets simples '' !

Supprimez simplement la ligne 2


nl /etc/passwd | sed '2d'
Copier après la connexion


Pour supprimer la ligne 3 jusqu'à la fin Une ligne


 nl /etc/passwd | sed '3,$d'
Copier après la connexion


est ajoutée après la deuxième ligne (c'est-à-dire ajoutée à la troisième ligne ) Les mots « boire du thé ? » sont écrits dessus !


[root@www ~]# nl /etc/passwd | sed '2a drink tea'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
drink tea
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....
Copier après la connexion


Si c'est avant la deuxième ligne,


 nl /etc/passwd | sed '2i drink tea'
Copier après la connexion


Si vous souhaitez ajouter plus de deux lignes, ajoutez deux lignes après la deuxième ligne, par exemple « Boire du thé ou.. ." ...' et « boire de la bière ? »


Explication détaillée de lutilisation de sed

[root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
Drink tea or ......
drink beer ?
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(后面省略).....
Copier après la connexion

Explication détaillée de lutilisation de sed

Un antislash 『 』 doit être utilisé entre chaque ligne pour ajouter une nouvelle ligne ! Ainsi, dans l’exemple ci-dessus, nous pouvons trouver qui existe à la fin de la première ligne.


Remplacer et afficher en unités de ligne


Remplacer le contenu des lignes 2 à 5 par "No 2-5 number" ?


[root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-5 number
6 sync:x:5:0:sync:/sbin:/bin/sync
.....(后面省略).....
Copier après la connexion



Grâce à cette méthode, nous pouvons remplacer toute la ligne de données !

Ne listez que les lignes 5 à 7 dans le fichier /etc/passwd


[root@www ~]# nl /etc/passwd | sed -n '5,7p'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
Copier après la connexion


Vous pouvez utiliser la fonction d'affichage ligne par ligne de sed pour sélectionner et afficher certains numéros de ligne dans un fichier.

Rechercher et afficher des données

Rechercher les lignes /etc/passwd avec le mot-clé racine


Explication détaillée de lutilisation de sed

nl /etc/passwd | sed '/root/p'
1  root:x:0:0:root:/root:/bin/bash
1  root:x:0:0:root:/root:/bin/bash
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3  bin:x:2:2:bin:/bin:/bin/sh
4  sys:x:3:3:sys:/dev:/bin/sh
5  sync:x:4:65534:sync:/bin:/bin/sync
....下面忽略
Copier après la connexion

Explication détaillée de lutilisation de sed

Si la racine est trouvée, sauf la sortie Tout lignes, les lignes correspondantes sont également sorties.

Lors de l'utilisation de -n, seules les lignes contenant le modèle seront imprimées.


nl /etc/passwd | sed -n '/root/p'
1  root:x:0:0:root:/root:/bin/bash
Copier après la connexion


Rechercher et supprimer des données

Supprimer toutes les lignes contenant root dans /etc/passwd, et afficher les autres lignes


nl /etc/passwd | sed  '/root/d'
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3  bin:x:2:2:bin:/bin:/bin/sh
....下面忽略
#第一行的匹配root已经删除了
Copier après la connexion


Recherchez des données et exécutez la commande

Après avoir trouvé la ligne correspondant au modèle oriental,

recherchez /etc/passwd et trouvez la ligne racine correspondante, exécutez un ensemble de commandes entre accolades, séparées par des points-virgules. Ici, remplacez bash par blueshell, puis affichez cette ligne :


 nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}'
 1  root:x:0:0:root:/root:/bin/blueshell
Copier après la connexion

<.>

Si vous remplacez uniquement le premier mot-clé bash de /etc/passwd par blueshell, alors

Quitter


nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'    
1  root:x:0:0:root:/root:/bin/blueshell
Copier après la connexion


Le dernier q est de sortir.

数据的搜寻并替换

除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:


sed 's/要被取代的字串/新的字串/g'
Copier après la connexion


 

先观察原始信息,利用 /sbin/ifconfig 查询 IP


[root@www ~]# /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
.....(以下省略).....
Copier après la connexion



本机的ip是192.168.1.100。

 

将 IP 前面的部分予以删除


[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
Copier après la connexion


接下来则是删除后续的部分,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

将 IP 后面的部分予以删除


[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.1.100
Copier après la connexion


 

多点编辑

一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell


nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1  root:x:0:0:root:/root:/bin/blueshell
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Copier après la connexion


-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。

 

 

直接修改文件内容(危险动作)


sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 我们还是使用下载的 regular_express.txt 文件来测试看看吧!

利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !


[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
Copier après la connexion


 

利用 sed 直接在 regular_express.txt 最后一行加入『# This is a test』


[root@www ~]# sed -i '$a # This is a test' regular_express.txt
Copier après la connexion


由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增『# This is a test』!

sed 的『 -i 』选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel sur la recherche de mots clés pour les commandes Linux communes Tutoriel sur la recherche de mots clés pour les commandes Linux communes Mar 05, 2025 am 11:45 AM

Ce didacticiel démontre une recherche de mots clés efficace dans Linux à l'aide de la famille de commandes GREP et des outils connexes. Il couvre les techniques de base et avancées, y compris des expressions régulières, des recherches récursives et combinant des commandes comme AWK, SED et XA

Contenu de travail des ingénieurs de l'opération et de la maintenance Linux Que font les ingénieurs de l'opération et de maintenance Linux? Contenu de travail des ingénieurs de l'opération et de la maintenance Linux Que font les ingénieurs de l'opération et de maintenance Linux? Mar 05, 2025 am 11:37 AM

Cet article détaille le rôle multiforme d'un administrateur du système Linux, englobant la maintenance du système, le dépannage, la sécurité et la collaboration. Il met en évidence des compétences techniques et générales essentielles, des attentes salariales et des relations publiques de carrière diverses

Comment configurer Selinux ou Apparmor pour améliorer la sécurité dans Linux? Comment configurer Selinux ou Apparmor pour améliorer la sécurité dans Linux? Mar 12, 2025 pm 06:59 PM

Cet article compare les modules de sécurité SELINUX et Apparmor, Linux, fournissant un contrôle d'accès obligatoire. Il détaille leur configuration, mettant en évidence les différences d'approche (basées sur la stratégie vs basée sur le profil) et les impacts de performance potentiels

Comment sauvegarder et restaurer un système Linux? Comment sauvegarder et restaurer un système Linux? Mar 12, 2025 pm 07:01 PM

Cet article détaille les méthodes de sauvegarde et de restauration du système Linux. Il compare les sauvegardes d'image système complètes avec des sauvegardes incrémentielles, discute des stratégies de sauvegarde optimales (régularité, emplacements multiples, versioning, test, sécurité, rotation) et DA

Comment utiliser des expressions régulières (regex) dans Linux pour la correspondance de motifs? Comment utiliser des expressions régulières (regex) dans Linux pour la correspondance de motifs? Mar 17, 2025 pm 05:25 PM

L'article explique comment utiliser des expressions régulières (regex) dans Linux pour la correspondance de motifs, la recherche de fichiers et la manipulation du texte, la syntaxe détaillant, les commandes et les outils comme Grep, SED et AWK.

Comment surveiller les performances du système dans Linux à l'aide d'outils comme TOP, HTOP et VMSTAT? Comment surveiller les performances du système dans Linux à l'aide d'outils comme TOP, HTOP et VMSTAT? Mar 17, 2025 pm 05:28 PM

L'article discute de l'utilisation de TOP, HTOP et VMSTAT pour surveiller les performances du système Linux, détaillant leurs fonctionnalités uniques et leurs options de personnalisation pour une gestion efficace du système.

Comment implémenter l'authentification à deux facteurs (2FA) pour SSH dans Linux? Comment implémenter l'authentification à deux facteurs (2FA) pour SSH dans Linux? Mar 17, 2025 pm 05:31 PM

L'article fournit un guide sur la configuration de l'authentification à deux facteurs (2FA) pour SSH sur Linux à l'aide de Google Authenticator, détaillant l'installation, la configuration et les étapes de dépannage. Il met en évidence les avantages de sécurité du 2FA, comme SEC amélioré

Méthodes de téléchargement de fichiers pour les commandes Linux communes Méthodes de téléchargement de fichiers pour les commandes Linux communes Mar 05, 2025 am 11:42 AM

Cet article compare les commandes Linux (SCP, SFTP, RSYNC, FTP) pour télécharger des fichiers. Il met l'accent sur la sécurité (favorisant les méthodes basées sur SSH) et l'efficacité, mettant en évidence les capacités de transfert Delta de RSYNC pour les fichiers volumineux. Le choix dépend de la taille du fichier,

See all articles