sed Dosyadaki Bir Dizeyi Değiştirme Komutu

Sed Command Replace String File



Herhangi bir dosya türüyle çalışırken, sözcükleri bulup değiştirerek bu dosyalarda değişiklik yapmak çok yaygın bir uygulamadır. Metin düzenleyicilerin çoğu, bu değişiklikleri gerçekleştirmek için farklı GUI tabanlı yöntemler sağlar. Ancak bazen, bir dosyadaki kelimeleri terminal aracılığıyla bulmanın ve değiştirmenin bir yoluna ihtiyacınız vardır. Bu nedenle, bu makalede, bir metin dosyasındaki bir dizeyi değiştirmek için sed komutunu kullanma yönteminde size yol göstereceğiz. Bu komutun kullanılabileceği farklı senaryolara da ışık tutacağız.

Not: Dosyadaki bir dizeyi değiştirmek için sed komutunun kullanımını göstermek için Linux Mint 20 kullanacağız. Dilerseniz başka herhangi bir Linux çeşidini de kullanabilirsiniz.







sed Komutunun Kullanımı:

Şimdi size Linux'ta sed komutunun kullanımını gösteren çok ilginç örnekler göstereceğiz. Bu komutun farklı senaryolarda nasıl çalıştığını görelim.



Gösteri için Metin Dosyası Oluşturma:

sed komutunun kullanımını göstermek için bir metin dosyası ile çalışmak istiyoruz. Ancak, bir Bash dosyası veya istediğiniz başka bir dosya bile oluşturabilirsiniz. İkinci olarak, bu dosyaya erişirken herhangi bir karmaşık yol belirtmek zorunda kalmamak için dosyayı Home dizininde oluşturacağız. Bir metin dosyası oluşturmak için aşağıdaki adımlar gerçekleştirilmelidir:



Linux Mint 20 görev çubuğunuzda bulunan Dosya Yöneticisi simgesine tıklayın:





Şimdi, orada herhangi bir yere sağ tıklayarak ve ardından basamaklı menüden Yeni Belge seçeneğini ve alt basamaklı menüden Boş belge seçeneğini seçerek Ana dizinde yeni bir metin dosyası oluşturun. Metin dosyası oluşturulduktan sonra, ona uygun bir ad verin. Bu özel örnek için onu sed.txt olarak adlandırdım.



Açmak için bu dosyaya çift tıklayın ve aşağıdaki resimde gösterildiği gibi herhangi bir rastgele metin yazın. Bu metin dosyasını Ctrl +S tuşlarına basarak kaydedin ve ardından kapatın.

Şimdi terminali aşağıdaki resimde gösterildiği gibi Linux Mint 20'de başlatın:

Terminali Linux Mint 20'de başlattıktan sonra aşağıda belirtilen tüm örnekleri tek tek inceleyebilirsiniz.

Verilen Bir Sözcüğün tüm Tekrarlarını değiştirmek için sed Komutunu kullanma:

Bir metin dosyasında belirli bir kelimenin tüm oluşumlarını değiştirmek için sed komutunu kullanabilirsiniz. Bu hedefe ulaşmanın sözdizimi aşağıda belirtilmiştir:

$sed's/sed/Kelime Bul/Sözcüğü Değiştir/dosya.txt

Burada, FindWord'ü değiştirmek istediğiniz kelimeyle ve ReplaceWord'ü değiştirilecek kelimeyle değiştirmeniz gerekir. Ayrıca, dosyayı bu değişiklikleri yapmak istediğiniz dosyanın adıyla değiştirmeniz gerekir. Bu senaryoda, FindWord'ü sed ile ve ReplaceWord'ü replace ile değiştirdim. Dosya adımız sed.txt idi. Aşağıdaki resimde de gösterilmiştir:

Bu komutun başarılı bir şekilde yürütülmesi, bu komutun terminalinizde çalıştırılması nedeniyle meydana gelen değişiklikleri size gösterecektir:

Her Satırda Verilen Bir Sözcüğün n'inci Oluşumunu değiştirmek için sed komutunu kullanma:

Yukarıdaki senaryo en basit değiştirme senaryosuydu, ancak bazen bir kelimenin tüm tekrarlarını değiştirmek istemezsiniz, bunun yerine o kelimenin tüm satırlarda sadece birinci, ikinci veya n'inci oluşumunu değiştirmek istersiniz. Bunu yapmak için aşağıdaki komutu uygulayabilirsiniz:

$sed's/Kelime Bul/Sözcüğü Değiştir/num' dosya.txt

Burada, FindWord'ü değiştirmek istediğiniz kelimeyle ve ReplaceWord'ü değiştirilecek kelimeyle değiştirmeniz gerekir. Ayrıca, dosyayı bu değişiklikleri yapmak istediğiniz dosyanın adıyla değiştirmeniz gerekir. Bu senaryoda, FindWord replace ve ReplaceWord'ü sed ile değiştirdim. Dosya adımız sed.txt idi. Ayrıca, num, değiştirilecek kelimenin oluşumunu veya konumunu ifade eder. Gösterilen örnekte, aşağıdaki resimde gösterildiği gibi her satırda ilk değiştirme yerini sed ile değiştirmek istiyorum:

Bu komutun başarılı bir şekilde yürütülmesi, bu komutun terminalinizde çalıştırılması nedeniyle meydana gelen değişiklikleri size gösterecektir:

Belirli Bir Satırda Verilen Bir Kelimeyi değiştirmek için sed komutunu kullanma:

Bazen, tüm belgede değil, yalnızca belirli bir satırdaki belirli bir sözcüğü değiştirmek istersiniz. Bunu yapmak için, aşağıdaki komutta belirli bir satır numarasını açıkça belirtmeniz gerekir:

$sed'LineNum s/Kelime Bul/Sözcüğü Değiştir/dosya.txt

Burada, FindWord'ü değiştirmek istediğiniz kelimeyle ve ReplaceWord'ü değiştirilecek kelimeyle değiştirmeniz gerekir. Ayrıca, dosyayı bu değişiklikleri yapmak istediğiniz dosyanın adıyla değiştirmeniz gerekir. Bu senaryoda, FindWord sed ve ReplaceWord'ü replace ile değiştirdim. Dosya adımız sed.txt idi. Ayrıca, LineNum'u değiştirmek istediğiniz satırın satır numarasıyla değiştirmeniz gerekir. Bu örnekte, aşağıdaki resimde gösterildiği gibi dosyamızın 2. satırındaki sed yerine replace ile değiştirmek istedik:

Bu komutun başarılı bir şekilde yürütülmesi, bu komutun terminalinizde çalıştırılması nedeniyle meydana gelen değişiklikleri size gösterecektir. Söz konusu değişikliklerin tüm metinde değil, dosyamızın sadece 2. satırında gerçekleştiğini kolaylıkla doğrulayabilirsiniz.

Çözüm:

Bir dosyadaki herhangi bir kelimeyi değiştirme ihtiyacı hissettiğinizde, yapmanız gereken ilk şey, özel gereksiniminizi belirlemektir, yani dosyanın tamamında bu belirli kelimeyi mi yoksa belirli bir kelimeyi değiştirmek mi istiyorsunuz? o belirli kelimeyi veya o kelimeyi belirli bir satırda değiştirmek istiyorsunuz. Kendi senaryonuzu belirledikten sonra, bu makalede ele alınan örneklerden o belirli yöntemi kullanabilirsiniz.