


Explication détaillée de l'utilisation de sed
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
[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 就是啦!
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 .....(后面省略).....
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'
Pour supprimer la ligne 3 jusqu'à la fin Une ligne
nl /etc/passwd | sed '3,$d'
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 .....(后面省略).....
Si c'est avant la deuxième ligne,
nl /etc/passwd | sed '2i drink tea'
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 ? »
[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 .....(后面省略).....
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 .....(后面省略).....
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
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
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 ....下面忽略
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
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已经删除了
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
<.>
nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}' 1 root:x:0:0:root:/root:/bin/blueshell
数据的搜寻并替换
除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:
sed 's/要被取代的字串/新的字串/g'
先观察原始信息,利用 /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 .....(以下省略).....
本机的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
接下来则是删除后续的部分,亦即: 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
多点编辑
一条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
-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。
直接修改文件内容(危险动作)
sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 我们还是使用下载的 regular_express.txt 文件来测试看看吧!
利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
利用 sed 直接在 regular_express.txt 最后一行加入『# This is a test』
[root@www ~]# sed -i '$a # This is a test' regular_express.txt
由於 $ 代表的是最后一行,而 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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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

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

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

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

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.

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.

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é

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,
