Latest web development tutorials

sed perintah Linux

Linux perintah Daquan Linux perintah Daquan

Linux sed perintah adalah dengan menggunakan script untuk memproses file teks.

Script sed dapat sesuai dengan instruksi untuk menangani, mengedit file teks.

Sed terutama digunakan untuk secara otomatis mengedit satu atau lebih file; menyederhanakan operasi berulang dokumen; prosedur konversi tertulis.

tatabahasa

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

Parameter Deskripsi:

  • -e <script> atau --expression = <script> ditentukan dalam script dengan pilihan untuk memproses file input teks.
  • -f <file script> atau --file = <file script> pilihan untuk menentukan file script untuk memproses file input teks.
  • h atau menampilkan --help membantu.
  • -n naskah atau --quiet atau --silent menunjukkan hasil setelah pengobatan saja.
  • -V Atau --version informasi versi layar.

Aksi Keterangan:

  • a: baru, dapat mengambil kembali string, dan mereka string akan muncul (saat baris berikutnya) di baris baru -
  • c: ganti, belakang c dapat maka string string ini dapat menggantikan n1, garis n2 antara!
  • d: menghapus, hapus karena ah, sehingga biasanya tidak menerima setiap kemudian d pound;
  • i: insert, saya dapat mengambil kembali string, dan mereka string akan (hadir pada satu baris) pada baris baru;
  • p: cetak, yang akan menjadi pilihan data cetak. P biasanya akan berjalan dengan parameter sed n ~
  • s: substitusi dapat digantikan kerja langsung mil! Biasanya ini s tindakan dapat digunakan dengan ekspresi reguler! Misalnya 1,20s / lama / baru / g itu!

contoh

Setelah baris keempat testfile file untuk menambahkan garis, dan output hasil ke output standar, masukkan perintah berikut pada prompt perintah:

sed -e 4a\newLine testfile 

cek pertama testfile isinya adalah sebagai berikut:

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

Setelah menggunakan perintah sed, hasil output adalah sebagai berikut:

$ 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 

Untuk menambah unit perilaku / Hapus

Isi / etc / daftar passwd dan nomor baris cetak, sementara set pertama 2-5 baris dihapus!

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

Tindakan sed sebagai '2,5d', yang adalah untuk menghapus d! Karena garis 2-5 untuk menghapus dia, sehingga tidak ada data yang ditampilkan pada 2-5 baris Lo ~ Juga, perhatikan, seharusnya dirilis ikan -e sed, tidak ada -e akan melakukannya! Juga mencatat bahwa kembali sed mengambil tindakan, pastikan untuk '' dua tanda kutip tunggal di sekitar Oh!

Hanya menghapus baris kedua

nl /etc/passwd | sed '2d' 

Untuk menghapus ketiga ke baris terakhir

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

Setelah kedua berturut-turut (yaitu, ditambahkan ke baris ketiga) plus "minum teh?" Kata-kata!

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

Tetapi jika itu adalah untuk berada di depan baris kedua

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

Jika Anda ingin meningkat lebih dari dua baris di belakang baris kedua untuk bergabung dua baris, seperti "Minum teh atau ....." dan "minum bir?"

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

Harus backslash "\" untuk menambahkan baris baru antara setiap baris dari Oh! Jadi, contoh di atas, kita dapat menemukan baris pertama di permukaan akhir, ada \ ada.

Dan untuk menggantikan unit display

Isi 2-5 baris substitusi untuk "Tidak ada 2-5 nomor" berarti?

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

Melalui metode ini kita dapat mengganti seluruh baris data!

Baris pertama berisi hanya 5-7 / etc / passwd dalam

[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
....下面忽略 

Jika akar ditemukan, di samping semua baris output, output akan cocok baris.

Bila menggunakan -n akan mencetak semua baris template.

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

Cari dan menghapus data

Dihapus / etc / passwd baris berisi akar dari semua line output lainnya

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

Cari data dan menjalankan perintah

Cari baris timur pencocokan pola, pencarian / etc / passwd, menemukan akar baris yang sesuai, di balik pelaksanaan kawat gigi dalam satu set perintah, dipisahkan dengan titik koma di antara setiap perintah, di sini untuk bash menggantikan blueshell,-ekspor ulang itu line:

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

Q adalah keluar terakhir.

Mencari dan mengganti data yang

Selain seluruh modus pengolahan baris, sed juga dapat menggunakan beberapa data dalam satuan pencarian dan mengganti. Vi cukup substansial mirip dengan pencarian sed dan diganti! Dia sedikit seperti ini:

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

Pengamatan pertama dari informasi asli, sesuai urutan / 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 Mesin ini 192.168.1.100.

Bagian depan IP yang akan dihapus

[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

Berikutnya adalah untuk menghapus bagian dari tindak lanjut, yaitu: 192.168.1.100 Bcast: Masker 192.168.1.255: 255.255.255.0

Bagian dari IP yang akan dihapus kemudian

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

Multi-Mengedit

Sebuah perintah sed untuk menghapus baris ketiga / etc / passwd ke akhir data, dan bash mengganti 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 merupakan multi-point editing, perintah menghapus pertama edit / etc / passwd untuk data pada akhir baris ketiga, pencarian perintah kedua bash diganti blueshell.

Langsung mengubah isi file (gerakan berbahaya)

sed dapat langsung mengubah isi file, tidak menggunakan pipa perintah atau data stream redirect! Namun, karena tindakan ini akan langsung memodifikasi file asli, sehingga Anda tidak hanya mengambil konfigurasi sistem untuk menguji! Kami masih menggunakan file yang didownload untuk menguji regular_express.txt melihatnya!

Menggunakan sed untuk setiap akhir baris jika dalam regular_express.txt. Apakah diganti!

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

Menggunakan sed langsung ke baris terakhir di regular_express.txt "# Ini adalah ujian."

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

Sejak $ mewakili baris terakhir, dan tindakan baru, jadi dokumen akhir untuk menambahkan "# Ini adalah tes!"

sed yang "-i" pilihan untuk langsung mengubah isi dari file, yang sangat membantu! Misalnya, jika Anda memiliki satu juta baris file yang ingin menambahkan beberapa baris teks 100, kali ini menggunakan vim mungkin gila! Karena file terlalu besar! Bagaimana melakukan itu? Sed pada penggunaan ah! Melalui sed langsung memodifikasi / mengganti fungsi, Anda bahkan tidak menggunakan vim untuk mengubah!

Linux perintah Daquan Linux perintah Daquan