▷ Linux'ta SED komutu nasıl kullanılır - ÖRNEKLER

Linux, kullanıcı, nesne veya destek yönetimi olsun, her birinin belirli görevlerin davranışında önemli bir rol oynadığı, her komutun Linux'ta katılımının olduğu ve bu komutlardan biri de bahsedeceğimiz Sed olan komutlarla dolu bir sistemdir. Ayrıntılarda Solvetic'te.

Linux'ta sed komutu nedirsed komutu, kelimenin tam anlamıyla, bir dosyadan veya uygunsa bir boru hattından girdi akışındaki temel işlevlerle metin üzerindeki çalışmaları değiştirmek için kullanabileceğimiz bir akış düzenleyicisidir.

Diğer metin editörlerinden farklı olarak, sed ile seçili içeriğin üzerinden geçerken bir boru hattındaki metni filtrelemek mümkündür.

AvantajLinux'ta sed kullanmanın avantajları şunlardır:

  • metin seçebiliriz
  • Metni değiştirebiliriz
  • Metne satır ekleme
  • Metinden satırları kaldırabiliriz
  • Orijinal bir dosyayı değiştirmenize veya korumanıza izin verir

sed kullanımına ilişkin genel sözdizimi aşağıdaki gibidir:

 sed SEÇENEKLER… [SCRIPT] [INPUT_FILE…]
Bu komutu Linux'ta kullanmanın bazı yollarını öğreneceğiz.

1. Linux'ta SED komutu nasıl kullanılır

sed'in temel kullanımıBu örnekte, sed komutunun girilen metnin bir kısmını nasıl değiştirebileceğini görmek için "echo" kullanacağız, şunu giriyoruz:

 yankı solvitik | sed 's / vitic / vetic /'
Bu durumda sed'e "vitic" kelimesini "vetic" ile değiştirmesini söylüyoruz, Enter'a basıldığında sonuç şöyle olacak:

BÜYÜT

Değişimin otomatik olduğunu görüyoruz.

2. SED Linux komutuyla metin seçme

Aşama 1
Bu durumda masaüstünde barındırılan bir metin dosyamız olacaktır:

BÜYÜT

Şimdi aşağıdaki satırı kullanacağız:

 daha az Solvetic.txt
Adım 2
Enter tuşuna bastığınızda sonuç şu olacaktır:

BÜYÜT

sed ile dosyanın bazı satırlarını seçmek mümkündür, bunun için seçilecek aralığın ilk ve son satırlarını belirtmeliyiz, örneğin, iki ila yedi arasındaki satırları çıkarmak istiyorsak yürütür:

 sed -n '2,7p' Solvetic.txt
Aşama 3
Aşağıdakileri göreceğiz:

BÜYÜT

Atanacak aralıklardaki virgülü aklımızda tutmalıyız (2,7), p parametresi bunun "eşleşen satırları yazdır" anlamına geldiğini belirtir, bununla birlikte sed komutu o aralığın tüm satırlarını yazdırır ve -n (sessiz) ) seçeneği, o aralığa uymayan metinleri görüntülememeye özen gösterir.

4. Adım
Çoklu seçim yapmak için -e (ifade) parametresini kullanabiliriz, örneğin:

 sed -n -e '1,2p' -e '5,6p' Solvetic.txt

BÜYÜT

Adım 5
sed ile başlangıç ​​çizgisini seçmek mümkündür, daha sonra dosyada hangilerinin geçilmesi gerektiğini belirtiriz ve alternatif satırları yazdırmak için örneğin şunu gireriz:

 sed -n '1 ~ 3p' Solvetic.txt
Bu durumda ilk sayı başlangıç ​​çizgisini belirtir ve ikinci sayı sed'e başlangıç ​​çizgisinden sonra hangi satırların görüntüleneceğini söyler:

BÜYÜT

6. Adım
sed'in başka bir kullanımı, eşleşen metin desenlerinin bulunduğu satırları seçme yeteneğidir, bu, satır numarasının nereden geldiğini bilmiyorsak aşağıdakileri uygulayabiliriz:

 sed -n '/ Çalıştır / p' Solvetic.txt

BÜYÜT

O terimle başlayan satırları göreceğiz.

3. SED Linux ile değiştirmeler nasıl oluşturulur

Aşama 1
Temel kısımda sed kullanarak metnin nasıl değiştirileceğini gördük, orada -s (ikame) parametresini kullandık. Ardından, ilk dize arama düzenini gösterir ve ikincisi, değiştirileceği metni belirtir.

 sed -n 's / görevler / eylemler / p' Solvetic.txt 
Bu örnekte "görevleri" "eylemler" ile değiştiriyoruz:

BÜYÜT

Adım 2
p sed parametresi ile ilk eşleşmeden sonra otomatik olarak durur, genel bir arama yapmak ve genel olarak değişikliği yapmak için "g" eklemeliyiz:

 sed -n 'ler / görevler / eylemler / gp' Solvetic.txt
Büyük/küçük harfe duyarsız olmasını istiyorsak, "i" ekleyeceğiz:
 sed -n 'ler / görevler / eylemler / gpi' Solvetic.txt
Aşama 3
Dosyanın yalnızca belirli bölümleri için değişiklik kısıtlamaları oluşturmak mümkündür, öncelikle analiz edilecek satırları listeliyoruz:
 sed -n '1,3p' Solvetic.txt

BÜYÜT

4. Adım
Şunu görelim, iki boşluğun nerede olduğunu bulabilir ve bir tane ile değiştirebiliriz:

 sed -n '1.3 s / * / / gp' Solvetic.txt
Yıldız işareti (*), önceden seçilen karakterin sıfırını veya daha fazlasını temsil eder.

Adım 5
Aşağıdaki komutla arama düzenini tek bir boşluğa indirgeyebilirsiniz:

 sed -n '1.3 s / * / / gp' Solvetic.txt
Sonuçlardaki farkı görüyoruz:

BÜYÜT

İkinci durumda, yıldız işareti önceki karakterin sıfır veya daha fazlasıyla eşleşir, bu, komutu uygulayarak boşluk olmayan her karakterin "sıfır boşluk" gibi görünmesini sağlar.

6. Adım
Aynı anda iki veya daha fazla oyuncu değişikliği yapmak için şunları uygularız:

 sed -n -e 'ler / yürütüldü / uygulandı / gip' -e 'ler / görevler / eylemler / gip' Solvetic.txt

BÜYÜT

4. Linux'ta SED değiştirme seçenekleri


Ayrıca sistemden dosya adlarını çıkarmak için sed kullanabiliriz, bu durumda her nesnenin numaralandırılabilen (en fazla dokuz öğeye kadar) bir arama modeliyle (alt ifadeler) eşleşmesi gerektiğini aklımızda tutmalıyız.

Aşama 1
Bu sayılar daha sonra belirli alt ifadelere atıfta bulunmak için kullanılabilir.
Alt ifade parantez [()] içine alınmalı ve normal bir karakter olarak algılanmamaları için parantezlerin önüne bir ters eğik çizgi (\) gelmelidir, örneğin:

 sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd

BÜYÜT

Bu komutta kullanılan değişkenler

  • sed 's /: sed komutunu ve değiştirme ifadesinin başlangıcını belirtir.
  • \ (: önüne ters eğik çizgi gelecek şekilde alt ifadeyi içine alın
  • [^:] *: parantez içinde bir grup içeren arama teriminin ilk alt ifadesidir, şapka işareti (^) bir grupta kullanıldığında "hayır" anlamına gelir, yani iki nokta üst üste olmayan herhangi bir karakter
  • \): Ters eğik çizgili kapanış parantezi [)]
  • *: "herhangi bir karakter ve bunların herhangi bir sayısını" gösteren ikinci arama alt ifadesidir.
  • / \ 1: önünde ters eğik çizgi (\) bulunan 1 sayısını içeren ve metnin ilk alt ifadeyle eşleştiğini gösteren ifadenin değiştirme kısmıdır.
  • / ': sed komutunu sonlandır

Adım 2
/etc/passwd dosyasının her satırı iki nokta üst üste ile biten kullanıcı adıyla başladığı için, önceki komutla iki nokta üst üste içermeyen herhangi bir karakter dizesini aradık. Kullanıcı adını izole ederek bu değeri aşağıdaki komutla değiştirebiliriz:

 sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd

BÜYÜT

Aşama 3
Aşağıdaki komutla sadece kullanıcı adlarını görüntüleyebiliriz:

 sed 's /:.*// "/ etc / passwd
sed ile başka bir seçenek de bir dosyadaki metni değiştirmek için c (kes - kes) parametresini kullanmaktır, örneğin:
 sed '/ Linux / c Linux işletim sistemi' Solvetic.txt

BÜYÜT

5. Linux'ta SED ile satır ve metin ekleyin

Aşama 1
sed ile kullanılacak başka bir görev, bir dosyaya yeni satırlar ve metin eklemektir, bu durumda aşağıdaki verilere sahibiz:

BÜYÜT

Adım 2
Hangisinin altına ekleneceğini belirten yeni bir satır ekleyebiliriz:

 sed '/ Ub / a -> Eklendi!' Solvetic.txt

BÜYÜT

Aşama 3
Eşleşmenin üzerine yeni bir satır eklemek için Ekle (i) komutunu kullanmak da mümkündür:

 sed '/ Wi / i -> Eklendi!' Solvetic.txt

BÜYÜT

4. Adım
Dosyadaki eşleşen bir satıra yeni metin eklemek için ve işareti (&) kullanabiliriz, şunu yürütürüz:

 sed 's /.*/--> Eklendi & /' Solvetic.txt

BÜYÜT

6. SED Linux ile bir satır nasıl silinir


Bu durumda, örneğin yürüttüğümüz ikinci satırı silmek için d (sil) parametresini kullanmalıyız:
 sed '2d' Solvetic.txt

BÜYÜT

Gerekirse bir aralığı kaldırabiliriz:

 sed '1,4d' Solvetic.txt
Bir aralığın dışındaki satırları kaldırmak için ünlem işareti (!) kullanmalıyız.
 sed '2,4! d' Solvetic.txt

7. Linux'ta SED ile değişiklikler nasıl kaydedilir

Aşama 1
Yapılan değişiklikleri uygulamak için, sed'in değişiklikleri orijinal dosyaya yazabilmesi için Yerinde seçeneğini (-i) kullanmak mümkündür, ancak daha fazla güvenlik için aşağıdaki gibi bir yedekleme uzantısı ekleyebiliriz (yedekledik Wi kelimesini içeren satırlar):

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt
İçeriği listeliyoruz:
 kedi Solvetic.txt.bak

BÜYÜT

Adım 2
Çıktıyı aynı sonuçlarla yeni bir dosyaya yönlendirmek mümkündür:

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt

BÜYÜT

sed ile, her bir kullanım seçeneğini gördüğümüz için Linux'ta dosyalarla tamamen eksiksiz bir şekilde çalışabiliriz.

wave wave wave wave wave