Bash'de String'den Karakterleri Kaldırma

Removing Characters From String Bash



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.04 Focal Fossa'da gerçekleştirilmiştir. 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. Terminal uygulamasına Ctrl+Alt+T klavye kısayolunu kullanarak 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 çıkarmak 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, dizeden h'yi kaldırmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | sed 'NS//'

Bu, yalnızca dizedeki ilk 'h' oluşumunu kaldıracaktır.
String1'den Belirli Karakteri Kaldır
Dizedeki tüm 'h' oluşumlarını kaldırmak için aşağıdaki komutu kullanın:



$dışarı attı 'Merhaba nasılsın?' | sed 's/h//g'

Nereye G küresel anlamına gelir. Dizedeki tüm 'h' oluşumlarını kaldıracaktır.
String2'den Belirli Karakteri Kaldır

Dizeden İlk Karakteri Kaldır

Dizeden ilk karakteri çıkarmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | sed 's/^.//' dosya

(.) tam olarak tek bir karakterle eşleşir ve (^) dizenin başındaki herhangi bir karakterle eşleşir.
Dizeden İlk Karakteri Kaldır

Dizeden Son Karakteri Kaldır

Dizeden son karakteri çıkarmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | sed 's/.$//'

Nereye ( . ) tam olarak tek bir karakterle eşleşir ve ($) dizenin sonundaki herhangi bir karakterle eşleşir.
Dizeden Son Karakteri Kaldır

Dizeden İlk ve Son Karakteri Kaldır

Dizeden ilk ve son karakteri çıkarmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | sed 's /^.//; s /.$//'

Dizeden İlk ve Son Karakteri Kaldır

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

Dizeden ilk karakteri çıkarmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | awk '{ print substr( $0, 2 ) }'

Burada ($0) tüm hedef dizedir 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.
Bir Dizeden İlk Karakteri Kaldır

Dizeden İlk İki Karakteri Kaldır

Ayrıca, bir dizenin başlangıcından belirli sayıda karakteri kaldırabilirsiniz. Örneğin, dizeden ilk iki karakteri çıkarmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | awk '{ print substr ($0, 3 ) }'

Yukarıdaki komut, ilk iki karakteri, 'he' 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 İlk İki Karakteri Kaldır

Dizeden Son Karakteri Kaldır

Son karakteri kaldırmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | awk '{ print substr( $0, 1, uzunluk($0)-1 ) }'

Nereye uzunluk($0)-1 çıkarmak anlamına gelir' 1 ' toplam karakter uzunluğundan.

Yukarıdaki komut, karakter numarası ile başlayan dizeyi yazdıracaktır. 1 ' 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ır. 1 ' ve karaktere kadar' 18 ,' son karakteri kaldırırken ' 19 .'

rmv son karakter frm dizesi

Dizeden Son İki Karakteri Kaldır

Son iki karakteri kaldırmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | awk '{ print substr( $0, 1, uzunluk($0)-2 ) }'

Nereye uzunluk($0)-2 çıkarmak anlamına gelir' 2 ' toplam karakter uzunluğundan.

Yukarıdaki komut, karakter numarası ile başlayan dizeyi yazdıracaktır. 1 ' ve karakter numarasına kadar' uzunluk($0)-2 ,' dizedeki son iki karakteri kaldırmak için.
Dizeden Son İki Karakteri Kaldır

Dizeden Hem İlk hem de Son Karakterleri Kaldır

Dizeden hem ilk hem de son karakterleri kaldırmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | awk '{baskı altdizini($0, 2, uzunluk($0) - 2)}'

Nereye uzunluk($0)-2 çıkarmak anlamına gelir' 2 ' toplam karakter uzunluğundan.

Yukarıdaki komut, karakter numarası ile başlayan dizeyi yazdıracaktır. 2 'karakter numarasına kadar' uzunluk($0)-2 ,' ilk ve son karakteri kaldırmak için.

Dizeden Hem İlk hem de Son Karakterleri Kaldır

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, bir dizgeden karakterleri çıkarmak 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:

$dışarı attı 'Merhaba nasılsın?' | kesmek -C 2-

Bu komut, ilk karakteri kaldırırken ikinci karakterden başlayarak dizeyi yazdıracaktır.
rmv kesme -c

Dizeden İlk Dört Karakteri Kaldır

Dizeden ilk dört karakteri çıkarmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | kesmek -C 5-

Bu komut, ilk dört karakteri kaldırırken beşinci karakterden başlayarak dizeyi yazdıracaktır.
Dizeden İlk Dört Karakteri Kaldır

2. ve 5. Karakterler Arasındaki Dizeyi Yazdır

Dizeyi yazdırmak için Merhaba nasılsın? ikinci ve beşinci karakterler arasında , komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | kesmek -C 2-5

Bu komut, kalan başlangıç ​​ve bitiş karakterlerini kaldırırken, ikinci karakterden başlayarak beşinci karaktere kadar dizeyi yazdıracaktır.
rmv 2. ve 5. c2

Dizeden Son Karakteri Kaldır

Dizeden son karakteri çıkarmak için Merhaba nasılsın? kullan kesmek ile komut devir , aşağıdaki gibi:

$dışarı attı 'Merhaba nasılsın?' | devir | kesmek -c2- | devir

Bu komut, önce dizeyi tersine çevirerek, ardından ilk karakteri keserek ve son olarak size istenen çıktıyı vermek için tekrar tersine çevirerek çalışır.
02Son Karakteri Dizeden Kaldır

Dizeden Son Dört Karakteri Kaldır

Satırdan son dört karakteri kaldırmak için Merhaba nasılsın? komut şöyle olurdu:

$dışarı attı 'Merhaba nasılsın?' | devir | kesmek -c5- | devir

Bu 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.
rmv son dört karakter

Dizeden İlk ve Son Karakterleri Kaldır

Dizeden ilk ve son karakterleri kaldırmak için Merhaba nasılsın? kullan kesmek ile komut devir , aşağıdaki gibi:

$dışarı attı 'Selam Dünya!' | kesmek -c2- | devir | kesmek -c2- |devir

Bu 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.
rmv ilk ve son

tr Kullanarak Karakteri Dizeden Kaldır

tr komutu (çevirinin kısaltması), bir dizedeki karakterleri çevirmek, sıkıştırmak ve silmek için kullanılır. Bir dizgeden 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:

$dışarı attı 'Merhaba nasılsın?' | NS -NSH

tüm olayları kaldır 01

Benzer şekilde, büyük harfli 'H' karakterinin tüm oluşumlarını dizeden kaldırmak için komut şöyle olacaktır:

$dışarı attı 'Merhaba nasılsın?' | NS -NSH

Küçük veya büyük harfleri kaldırmak için yorumlanmış dizileri de kullanabilirsiniz:

$dışarı attı 'Merhaba nasılsın?'| NS -NS [:üst:]

olaylar daha düşük

$dışarı attı 'Merhaba nasılsın?'| NS -NS [:daha düşük:]

üst olaylar

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.

$dışarı attı 'Merhaba nasılsın?' | NS -NS'hH'

üst ve alt olaylar

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:

$dışarı attı 'Merhaba nasılsın?' | NS -NS 'g-h'

Bu komut, dizedeki 'd-h' (d,e,f,g,h) aralığındaki tüm karakterleri kaldıracaktır.
olaylar belirli aralık

Çözüm

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 ne elde etmek istediğinize bağlıdır.