Latest web development tutorials

comando di Linux sed

Linux comando Daquan Linux comando Daquan

comando di Linux sed è quello di utilizzare lo script per elaborare i file di testo.

script sed può essere in conformità con le istruzioni per gestire, modificare file di testo.

Sed è principalmente utilizzato per modificare automaticamente uno o più file; semplificare ripetuto il funzionamento del documento; procedure di conversione scritte.

grammatica

sed [-hnV][-e<script>][-f<script文件>][文本文件]

Descrizione Parametro:

  • -e <script> o --expression = <script> specificato nello script con l'opzione per elaborare il file di testo di input.
  • <File script> -f <file script> o --file = opzione per specificare il file di script per elaborare il file di testo di input.
  • -h o mostra --help aiutare.
  • -n script o --quiet o --silent mostra i risultati dopo solo trattamento.
  • -V O --version mostra informazioni sulla versione.

Azione Descrizione:

  • una: nuova, in grado di riprendere una stringa, e appariranno quelle stringhe (attualmente la riga successiva) su una nuova linea -
  • c: sostituire, c posteriore può quindi stringa queste stringhe può sostituire n1, n2 linea tra!
  • D: eliminare, cancellare, perché è ah, quindi di solito si assume alcuna tardi d libbra;
  • i: inserto, posso prendere la corda, e quelle stringhe sarà (presente su una sola riga) su una nuova linea;
  • p: stampa, che sarà una selezione dei dati di stampa. P di solito eseguito con il parametro sed -n ~
  • s: la sostituzione può essere sostituito lavorare direttamente miglia! Di solito questo s azione può essere utilizzato con le espressioni regolari! Per esempio 1,20s / vecchio / nuovo / g è!

Esempi

Dopo la quarta linea testfile file da aggiungere una riga, ed emette i risultati standard output, digitare il seguente comando al prompt dei comandi:

sed -e 4a\newLine testfile 

In primo luogo verificare testfile contenuti sono i seguenti:

$ cat testfile #查看testfile 中的内容  
HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test 

Dopo aver utilizzato il comando sed, i risultati di output sono i seguenti:

$ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  
HELLO LINUX! #testfile文件原有的内容  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test  
newline 

Per aggiungere unità di comportamento / Rimuovi

Il contenuto di / etc / passwd elenchi e numeri di riga di stampa, mentre il primo set 2-5 righe eliminate!

[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
.....(后面省略).....

azione sed come '2,5D', che è quello di rimuovere il d! Perché le linee 2-5 per rimuovere lui, in modo che nessun dato viene visualizzato sulla linea 2-5 Lo ~ Inoltre, prendere nota, dovrebbe essere rilasciato pesci sed -e, senza -e lo farà! Si noti inoltre che la parte posteriore sed Azione, assicurarsi di '' due apici intorno Oh!

Basta eliminare la seconda fila

nl /etc/passwd | sed '2d' 

Per rimuovere il terzo all'ultima riga

nl /etc/passwd | sed '3,$d' 

Dopo la seconda fila (cioè, aggiunto alla terza fila) più "bevanda tè? 'Parole!

[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
.....(后面省略).....

Ma se è di essere di fronte alla seconda fila

nl /etc/passwd | sed '2i drink tea' 

Se si vuole aumentare di più di due file dietro la seconda fila di unire due linee, come ad esempio "Bere il tè o ....." e "bere birra?"

[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
.....(后面省略).....

Deve essere un backslash "\" per aggiungere una nuova riga tra ogni fila di Oh! Così, l'esempio precedente, possiamo trovare la prima riga della superficie finale, ci \ esiste.

E per sostituire le unità di visualizzazione

Il contenuto di 2-5 fila di sostituzione su "No 2-5 numero" significa?

[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
.....(后面省略).....

Attraverso questo metodo siamo in grado di sostituire l'intera riga di dati!

La prima riga elenca solo 5-7 / / passwd etc all'interno

[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
</p><p>
可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。
</p>
<h3>数据的搜寻并显示</h3>
<p>搜索 /etc/passwd有root关键字的行</p>
<pre>
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
....下面忽略 

Se si trova la radice, oltre a tutte le linee di uscita, l'uscita corrisponderà alla linea.

Quando si utilizza -n stamperà tutte le linee di tale modello.

nl /etc/passwd | sed -n '/root/p'
1  root:x:0:0:root:/root:/bin/bash

Ricerca e cancellare i dati

Cancellato etc linea / / passwd contiene la radice di tutte le altre uscita di linea

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已经删除了

i dati della ricerca ed eseguire i comandi

Trovare una linea orientale pattern matching, la ricerca / etc / passwd, trovare la radice della riga corrispondente, dietro l'attuazione delle parentesi graffe in una serie di comandi, separati da un punto e virgola tra ogni comando, qui per colpire sostituire blueshell, riesportarla linea:

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

Q è l'ultima uscita.

Ricerca e sostituire i dati

Oltre a tutta la modalità di elaborazione linea, sed possono anche utilizzare alcuni dei dati in unità di ricerca e sostituzione. Vi abbastanza sostanzialmente simile alla ricerca sed e sostituito! E 'un po' come questo:

sed 's/要被取代的字串/新的字串/g'

La prima osservazione delle informazioni originali, usare interrogazione / 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 Questa macchina è 192.168.1.100.

La parte anteriore del IP da eliminare

[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

Successivo è quello di eliminare parte del follow-up, vale a dire: 192.168.1.100 Bcast: Maschera 192.168.1.255: 255.255.255.0

La parte di IP da eliminare in seguito

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

Multi-Edit

Un comando sed per cancellare la terza linea / etc / passwd alla fine dei dati, e la bash sostituire 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 rappresenta l'editing multi-point, il comando elimina prima modificare / etc / passwd per i dati, alla fine della terza linea, la seconda ricerche comando bash sostituiti blueshell.

Direttamente modificare il contenuto del file (movimenti pericolosi)

sed può modificare direttamente il contenuto del file, non utilizzare il tubo flussi di comando o di dati reindirizzare! Tuttavia, dal momento che questa azione sarà quella di modificare direttamente il file originale, in modo da non basta prendere la configurazione del sistema per testare! Usiamo ancora il file scaricato per testare regular_express.txt vederlo!

Utilizzare sed a ciascuna estremità della linea se è all'interno regular_express.txt. Viene sostituita!

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

Utilizzare sed direttamente in ultima fila in regular_express.txt "# Questa è una prova".

[root@www ~]# sed -i '$a # This is a test' regular_express.txt

Poiché il $ rappresenta l'ultima riga, e una nuova azione è, quindi il documento finale di aggiungere "# Questa è una prova!"

sed l'opzione "-i" per modificare direttamente il contenuto del file, che è molto utile! Ad esempio, se si dispone di un milione di righe di file che si desidera aggiungere qualche riga di testo 100, questa volta usando vim può essere pazzo! Poiché il file è troppo grande! Come farlo? Sed sul ah uso! Attraverso sed direttamente modificare / sostituire la funzione, non hanno nemmeno usare vim per modificare!

Linux comando Daquan Linux comando Daquan