1 VİDEODA PYTHON ÖĞREN | PYTHON DERSLERİ [2020]
İçindekiler:
Çoğu zaman metin dosyalarıyla çalışırken bir veya daha fazla dosyadaki metin dizelerini bulmanız ve değiştirmeniz gerekir.
sed
bir tream ed editördür. Dosyalarda ve boru hatları gibi giriş akışlarında temel metin manipülasyonu gerçekleştirebilir.
sed
ile kelimeleri, satırları arayabilir, bulabilir ve değiştirebilir, ekleyebilir ve silebilirsiniz. Karmaşık kalıpları eşleştirmenize izin veren temel ve genişletilmiş düzenli ifadeleri destekler.
, dizeleri bulma ve
sed
ile nasıl değiştireceğimiz hakkında konuşacağız. Ayrıca özyinelemeli arama ve değiştirme işlemlerinin nasıl yapılacağını da göstereceğiz.
sed
Bul ve Değiştir ile
sed
sed
çeşitli versiyonları vardır, aralarında bazı fonksiyonel farklılıklar vardır. macOS BSD sürümünü kullanır ve çoğu Linux dağıtımı varsayılan olarak önceden yüklenmiş GNU
sed
ile gelir. GNU sürümünü kullanacağız.
sed
kullanarak metin aramanın ve değiştirmenin genel biçimi aşağıdaki formu alır:
sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE
-
-i
-sed
varsayılan olarak çıktısını standart çıktıya yazar. Bu seçeneksed
dosyaları yerinde düzenlemesini söyler. Bir uzantı sağlanırsa (ex -i.bak) orijinal dosyanın yedeği oluşturulur.s
- Yedek komut, muhtemelen sed'de en çok kullanılan komut./ / /
- Sınırlayıcı karakter. Herhangi bir karakter olabilir, ancak genellikle eğik çizgi (/
) karakteri kullanılır.SEARCH_REGEX
- Normal dize veyaSEARCH_REGEX
normal ifade.REPLACEMENT
- Değiştirme dizesi.g
- Genel değiştirme bayrağı.sed
varsayılan olarak dosyayı satır satır okur ve bir satırdakiSEARCH_REGEX
yalnızca ilk tekrarlamasını değiştirir. Değiştirme bayrağı sağlandığında, tüm oluşumlar değiştirilir.INPUTFILE
- Komutu çalıştırmak istediğiniz dosyanın adı.
Kabuğun meta karakterlerinin genişlememesi için, bağımsız değişkenin içine tırnak koymak iyi bir uygulamadır.
Dosyalarda metin aramak ve en sık kullanılan seçeneklerden bazılarıyla değiştirmek için
sed
komutunun nasıl kullanılacağına dair örnekleri görelim.
Gösterim amacıyla, aşağıdaki dosyayı kullanacağız:
file.txt
123 Foo foo foo foo /bin/bash Ubuntu foobar 456
sed -i 's/foo/linux/' file.txt
123 Foo linux foo linux /bin/bash Ubuntu foobar 456
Genel değiştirme bayrağı
sed
ile arama deseninin tüm tekrarlarının yerini alır:
sed -i 's/foo/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu linuxbar 456
Fark etmiş olabileceğiniz gibi, önceki örnekte
foobar
dizesinin içindeki alt dize
foo
da değiştirilmiştir. Bu istenen davranış değilse, arama dizesinin her iki ucunda da sözcük sınırlaması ifadesini (
\b
) kullanın. Bu, kısmi kelimelerin eşleşmemesini sağlar.
sed -i 's/\bfoo\b/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu foobar 456
Deseni eşleme büyük / küçük harfe duyarlı hale getirmek için
I
bayrağını kullanın. Aşağıdaki örnekte hem
g
hem de
I
bayraklarını kullanıyoruz:
sed -i 's/foo/linux/gI' file.txt
123 linux linux linux linux /bin/bash Ubuntu linuxbar 456
sed -i 's/\/bin\/bash/\/usr\/bin\/zsh/g' file.txt
Daha kolay ve daha okunabilir seçenek başka bir sınırlayıcı karakter kullanmaktır. Çoğu kişi dikey çubuk (
|
) veya iki nokta üst üste (:) kullanır, ancak başka herhangi bir karakter kullanabilirsiniz:
sed -i 's|/bin/bash|/usr/bin/zsh|g' file.txt
123 Foo foo foo foo /usr/bin/zsh Ubuntu foobar 456
Ayrıca düzenli ifadeler de kullanabilirsiniz. Örneğin, 3 basamaklı sayıların tümünü aramak ve bunları yerine kullanacağınız dize
number
değiştirmek için:
sed -i 's/\b\{3}\b/number/g' file.txt
number Foo foo foo foo /bin/bash demo foobar number
Sed'in bir başka yararlı özelliği de ve işareti karakterini kullanabilmenizdir. Karakter birden çok kez kullanılabilir.
Örneğin, her 3 basamaklı sayının etrafına süslü ayraçlar
{}
eklemek istiyorsanız, şunu yazın:
sed -i 's/\b\{3}\b/{&}/g' file.txt
{123} Foo foo foo foo /bin/bash demo foobar {456}
Son olarak,
sed
ile bir dosyayı düzenlerken yedekleme yapmak her zaman iyi bir fikirdir. Bunu yapmak için sadece
-i
seçeneğine bir uzantı sağlayın. Örneğin,
file.txt
düzenlemek ve orijinal dosyayı
file.txt.bak
olarak kaydetmek için şunları kullanırsınız:
sed -i.bak 's/foo/linux/g' file.txt
ls
Yinelemeli Bul ve Değiştir
Bazen bir dizeyi içeren dosyalar için dizinleri özyinelemeli olarak aramak ve dizeyi tüm dosyalarda değiştirmek istersiniz. Bu, dizindeki dosyaları özyinelemeli olarak
find
veya
grep
gibi komutlar kullanılarak ve dosya adlarını
sed
.
Aşağıdaki komut, geçerli çalışma dizinindeki dosyaları özyinelemeli olarak arar ve dosya adlarını
sed
.
find. -type f -exec sed -i 's/foo/bar/g' {} +
-print0
boşluk içeren dosyalarla ilgili sorunları önlemek için, dosya adını yazdırmayı
find
ve ardından boş bir karakter
-print0
ve çıktıyı
xargs -0
kullanarak
-print0
yönlendiren
-print0
seçeneğini kullanın:
find. -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
Bir dizini hariç tutmak için
-not -path
seçeneğini kullanın. Örneğin, nokta (
.
) İle başlayan tüm dosyaları hariç tutmak için yerel git deponuzdaki bir dizeyi değiştiriyorsanız, şunu kullanın:
find. -type f -not -path '*/\.*' -print0 | xargs -0 sed -i 's/foo/bar/g'
find. -type f -name "*.md" -print0 | xargs -0 sed -i 's/foo/bar/g'
Başka bir seçenek, arama desenini içeren tüm dosyaları özyinelemeli olarak bulmak için
grep
komutunu kullanmak ve daha sonra dosya adlarını
sed
aktarmaktır:
grep -rlZ 'foo'. | xargs -0 sed -i.bak 's/foo/bar/g'
Sonuç
Karmaşık ve karmaşık görünse de, ilk başta, dosyalardaki metni
sed
ile değiştirmek ve değiştirmek çok basittir.
sed
komutları, seçenek ve bayraklar hakkında daha fazla bilgi edinmek için GNU sed kılavuzunu ve Grymoire sed eğitimini ziyaret edin. Herhangi bir sorunuz veya geri bildiriminiz varsa, yorum bırakmaktan çekinmeyin.
Android'de sistem dosyalarını düzenlemek ve değiştirmek için es dosya gezgini nasıl kullanılır
Köklü bir Android telefon mu kullanıyorsunuz? Android cihazdaki sistem dosyalarını düzenlemek ve değiştirmek için ES Dosya Gezgini'nin nasıl kullanılacağını öğrenin.
Google adm nedir ve androidinizi bulmak için nasıl kullanılır?
Geçmişte, Google "telefonumu bul" işlevini yerine getirmeyi teklif etmemişti, ancak yeni Android Cihaz Yöneticisi sayesinde nihayetinde tüm bunlar değişti.
Fotoğraflardaki göz rengini değiştirmek için photoshop nasıl kullanılır?
Portre çekimlerinde göz rengini değiştirmek için Photoshop kullanarak resimlerinizi çeki düzenleyin.