Bazen bir dizeden karakterleri kaldırmanız gerekebilir. Sebep ne olursa olsun, Linux size Bash'deki bir dizgeden karakterleri kaldırmanıza izin veren çeşitli yerleşik, kullanışlı araçlar sağlar. Bu makale, bir dizeden karakterleri kaldırmak için bu araçları nasıl kullanacağınızı gösterir.
Makale, aşağıdakilerin nasıl gerçekleştirileceğini kapsar:
- sed kullanarak karakter dizisinden kaldır
- awk kullanarak karakter dizisinden kaldırın
- cut kullanarak karakter dizisinden kaldırın
- tr kullanarak karakter dizisinden kaldırın
Bu makalede gösterilen komutlar Ubuntu 20'de gerçekleştirilmiştir.04 Odak Fossa. Aynı komutlar, yukarıdaki araçlara sahip diğer Linux dağıtımlarında da gerçekleştirilebilir. Komutları çalıştırmak için varsayılan Terminal uygulamasını kullanacağız. Ctrl+Alt+T klavye kısayolunu kullanarak Terminal uygulamasına erişebilirsiniz.
sed Kullanarak Dizeden Karakterleri Kaldırma
Sed, metin akışlarını düzenlemek için kullanılan güçlü ve kullanışlı bir yardımcı programdır. Giriş akışlarında temel metin işlemlerini gerçekleştirmenize izin veren, etkileşimli olmayan bir metin düzenleyicidir. İstenmeyen karakterleri dizelerden kaldırmak için sed'i de kullanabilirsiniz.
Gösteri amacıyla, örnek bir dize kullanacağız ve ardından onu sed komutuna aktaracağız.
Dizeden Belirli Karakteri Kaldır
sed kullanarak, bir dizeden belirli bir karakteri kaldırabilirsiniz. Örneğin, “dizesinden “h”yi kaldırmak içinMerhaba nasılsın?” komut şöyle olacaktır:
$ echo "merhaba nasılsın?" | sed 's/h//'Bu, dizede yalnızca ilk 'h' oluşumunu kaldıracaktır.
Dizedeki tüm 'h' oluşumlarını kaldırmak için aşağıdaki komutu kullanın:
Nerede g küresel anlamına gelir. Dizedeki tüm 'h' oluşumlarını kaldıracak.
Dizeden İlk Karakteri Kaldır
“Dizesinden ilk karakteri çıkarmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | sed 's/^.//' dosyaNerede (.) tam olarak tek bir karakterle eşleşir ve (^) dizenin başındaki herhangi bir karakterle eşleşir.
Dizeden Son Karakteri Kaldır
“Dizesinden son karakteri çıkarmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | sed 'ler/.$//'Nerede (.) tam olarak tek bir karakterle eşleşir ve ($) dizenin sonundaki herhangi bir karakterle eşleşir.
Dizeden İlk ve Son Karakteri Kaldır
“Dizesinden ilk ve son karakteri çıkarmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | sed 's/^.//;s/.$//'
awk Kullanarak Dizeden Karakterleri Kaldırma
Awk, metin işleme ile birlikte kalıp eşleştirme için kullanılan güçlü bir betik dilidir. Awk, metni çeşitli şekillerde filtrelemenize ve dönüştürmenize olanak tanır. Awk'yi dizelerden karakterleri kaldırmak için de kullanabilirsiniz.
Gösteri amacıyla, örnek bir dize kullanacağız ve ardından onu awk komutuna aktaracağız.
Bir Dizeden İlk Karakteri Kaldır
“Dizesinden ilk karakteri çıkarmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | awk ' print substr( $0, 2 ) '($0) tüm hedef dize ve (2) karakter başlangıç konumudur. Yukarıdaki komut, ilk karakter olan 'h' karakterini '1' kaldırır ve ikinci karakter olan 'e' ile başlayan hedef dizeyi döndürür.'
Dizeden İlk İki Karakteri Kaldır
Ayrıca bir dizenin başlangıcından belirli sayıda karakteri kaldırabilirsiniz. Örneğin, “ dizesinden ilk iki karakteri çıkarmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | awk ' print substr ($0, 3 ) 'Yukarıdaki komut, ilk iki karakteri, 'he'yi veya '1 ve 2' karakter numaralarını kaldırır ve '3' veya 'l' karakter numarasıyla başlayan hedef dizeyi döndürür.'
Dizeden Son Karakteri Kaldır
Son karakteri kaldırmak için “Merhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | awk ' print substr( $0, 1, uzunluk($0)-1 ) 'Nerede uzunluk($0)-1 çıkarmak anlamına gelir'1' toplam karakter uzunluğundan.
Yukarıdaki komut, karakter numarası ' ile başlayan dizeyi yazdıracaktır1' kadar uzunluk($0)-1 son karakteri çıkarmak için.
Var '19' yukarıdaki dizedeki karakterler (boşluklar dahil). Komut, ' karakterinden başlayarak tüm karakterleri yazdırarak çalışacaktır1've karaktere kadar'18,' son karakteri kaldırırken '19.'
Dizeden Son İki Karakteri Kaldır
Son iki karakteri kaldırmak için “Merhaba nasılsın?” komut şöyle olacaktır:
$ echo "merhaba nasılsın?" | awk ' print substr( $0, 1, uzunluk($0)-2 ) 'Nerede uzunluk($0)-2 çıkarmak anlamına gelir'2' toplam karakter uzunluğundan.
Yukarıdaki komut, karakter numarası ' ile başlayan dizeyi yazdıracaktır1' ve karakter numarasına kadar'uzunluk($0)-2,' dizedeki son iki karakteri kaldırmak için.
Dizeden Hem İlk hem de Son Karakterleri Kaldır
“Dizesinden hem ilk hem de son karakterleri kaldırmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | awk 'baskı altdizini($0, 2, uzunluk($0) - 2)'Nerede uzunluk($0)-2 çıkarmak anlamına gelir'2' toplam karakter uzunluğundan.
Yukarıdaki komut, karakter numarası ' ile başlayan dizeyi yazdıracaktır2'karakter numarasına kadar'uzunluk($0)-2,' ilk ve son karakteri kaldırmak için.
Cut Kullanarak Karakteri Dizeden Kaldır
Cut, bir dize veya dosyadan metnin bir bölümünü çıkarmak ve sonucu standart bir çıktıya yazdırmak için yaygın olarak kullanılan bir komut satırı aracıdır. Bu komutu ayrıca bir dizgeden karakterleri kaldırmak için de kullanabilirsiniz.
Gösteri amacıyla, örnek bir dize kullanacağız ve ardından onu cut komutuna aktaracağız.
Dizeden İlk Karakteri Kaldır
Dizeden ilk karakteri çıkarmak için, “Merhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | kesim -c 2-Bu komut, ilk karakteri kaldırırken ikinci karakterden başlayarak dizeyi yazdıracaktır.
Dizeden İlk Dört Karakteri Kaldır
“Dizesinden ilk dört karakteri çıkarmak içinMerhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | kesim -c 5-Bu komut, ilk dört karakteri kaldırırken beşinci karakterden başlayarak dizeyi yazdıracaktır.
2. ve 5. Karakterler Arasındaki Dizeyi Yazdır
" dizesini yazdırmak içinMerhaba nasılsın?” ikinci ve beşinci karakterler arasında, komut şöyle olurdu:
$ echo "merhaba nasılsın?" | kes -c 2-5Bu komut, dizeyi ikinci karakterden başlayarak beşinci karaktere kadar yazdıracak ve kalan başlangıç ve bitiş karakterlerini kaldıracaktır.
Dizeden Son Karakteri Kaldır
“Dizesinden son karakteri çıkarmak içinMerhaba nasılsın?” kullan kesmek ile komut devir, aşağıdaki gibi:
$ echo "merhaba nasılsın?" | devir | kesim -c2- | devirBu komut, önce dizeyi tersine çevirerek, ardından ilk karakteri keserek ve son olarak istediğiniz çıktıyı vermek için onu tekrar tersine çevirerek çalışır.
Dizeden Son Dört Karakteri Kaldır
Satırdan son dört karakteri çıkarmak için “Merhaba nasılsın?” komut şöyle olurdu:
$ echo "merhaba nasılsın?" | devir | kesim -c5- | devirBu komut, önce dizeyi tersine çevirerek, ardından ilk dört karakteri keserek ve ardından istediğiniz çıktıyı vermek için onu tekrar tersine çevirerek çalışır.
Dizeden İlk ve Son Karakterleri Kaldır
“Dizesinden ilk ve son karakterleri kaldırmak içinMerhaba nasılsın?” kullan kesmek ile komut devir, aşağıdaki gibi:
$ echo "merhaba dünya!" | kesme -c2- | devir | kesme -c2- | devirBu komut, ilk karakteri keserek, ardından dizeyi ters çevirerek ve ilk karakterini keserek ve ardından istediğiniz çıktıyı vermek için tekrar tersine çevirerek çalışır.
tr Kullanarak Dizeden Karakteri Kaldırma
tr komutu (çevirinin kısaltması), bir dizedeki karakterleri çevirmek, sıkıştırmak ve silmek için kullanılır. Bir dizeden karakterleri kaldırmak için tr'yi de kullanabilirsiniz.
Gösteri amacıyla, örnek bir dize kullanacağız ve ardından onu tr komutuna aktaracağız.
Tüm Karakter Oluşumlarını Kaldır
tr komutunu kullanarak, dizginizden tüm küçük veya büyük harf karakterlerini kaldırabilirsiniz. Örneğin, küçük harfli 'h' karakterinin tüm oluşumlarını dizeden kaldırmak için komut şöyle olacaktır:
$ echo "Merhaba, nasılsın?" | tr -d h
Benzer şekilde, büyük harfli 'H' karakterinin tüm oluşumlarını dizeden kaldırmak için komut şöyle olacaktır:
$ echo "Merhaba, nasılsın?" | tr -d HKüçük veya büyük harfleri kaldırmak için yorumlanmış dizileri de kullanabilirsiniz:
$ echo "Merhaba, nasılsın?"| tr -d [:üst:]$ echo "MERHABA, nasılsın?"| tr -d [:alt:]
Küçük Harf ve Büyük Harf Karakterlerinin Tüm Tekrarlarını Kaldır
Ayrıca bir dizeden hem küçük hem de büyük harfli karakterlerin tüm oluşumlarını kaldırabilirsiniz. Örneğin, aşağıdaki komut, hem küçük hem de büyük harf olan 'h' karakterinin tüm oluşumlarını kaldıracaktır.
$ echo "Merhaba, nasılsın?" | tr -d 'hH'
Belirli Bir Aralıktaki Tüm Karakter Oluşumlarını Kaldır
Belirli bir 'd-h' aralığındaki bir dizedeki tüm karakter oluşumlarını kaldırmak için komut şöyle olacaktır:
$ echo "merhaba nasılsın?" | tr -d 'd-h'Bu komut, dizedeki 'd-h' (d,e,f,g,h) aralığındaki tüm karakterleri kaldıracaktır.
Sonuç
Linux'ta basit bir işi başarmanın her zaman birden fazla yolu olacaktır. Aynısı, bir dizgeden karakterlerin çıkarılması için de geçerlidir. Bu makale, bir dizeden istenmeyen karakterleri kaldırmak için birkaç örnekle birlikte bunu yapmanın dört farklı yolunu gösterdi. Hangi aracı kullanacağınıza karar vermek, tercihlerinize ve daha da önemlisi, neyi başarmak istediğinize bağlıdır.