Bash'te Bir Dosyadaki Bir Dize Nasıl Değiştirilir

How Replace String File Bash



Bir programcı olarak, verileri geçici veya kalıcı olarak depolamak için farklı dosya türleriyle çalışmanız gerekebilir. Bazen dosyanın bir kısmını değiştirmeniz veya dosyanın belirli içeriğini değiştirmeniz gerekebilir. Bir dosyadaki içeriği değiştirmek için belirli dosya dizesini aramalısınız. NS ancak komut, bir bash betiği kullanarak bir dosyadaki herhangi bir dizeyi değiştirmek için kullanılır. Bu komut, bash içindeki bir dosyanın içeriğini değiştirmek için çeşitli şekillerde kullanılabilir. NS 'Awk ' komutu, bir dosyadaki dizeyi değiştirmek için de kullanılabilir. Bu öğretici, bir bash betiği kullanarak bir dosyadaki herhangi bir dize değerini nasıl değiştireceğinizi gösterecektir. Adlı bir metin dosyası Satış.txt aşağıdaki içerik ile değiştirme işlemlerini göstermek için oluşturulmuştur.

Satış.txt







Tarih Tutar Alanı

01/01/2020 60000 Dakka
10/02/2020 76000 Rajshahi
21/03/2020 54000 Hulna
15/04/2020 78000 Chandpur
17/05/2020 45000 Bogra
02/06/2020 67000 Comilla

Bir Dosyadaki Dizeyi `sed` Komutuyla Değiştirin

` ifadesinin temel sözdizimi sed Bir dosyadaki belirli bir dizgiyi değiştirmek için ` komutu aşağıda verilmiştir.



Sözdizimi



sed -ben 's/search_string/replace_string/'dosya adı

Yukarıdaki sözdiziminin her bölümü aşağıda açıklanmıştır.





'-ben' seçeneği, arama dizesi dosyada varsa, orijinal dosyanın içeriğini değiştirme dizesiyle değiştirmek için kullanılır.

's' değiştirme komutunu gösterir.



'Arama dizisi' değiştirilmek üzere dosyada aranacak dize değerini içerir.

'değiştir_string' eşleşen dosyanın içeriğini değiştirmek için kullanılacak dize değerini içerir. 'Arama dizisi' değer.

'dosya adı' arama ve değiştirmenin uygulanacağı dosya adını içerir.

Örnek 1: Dosyayı 'sed' Komutuyla Değiştirin

Aşağıdaki komut dosyasında, ara ve değiştir metni kullanıcıdan alınacaktır. Arama dizesi 'Sales.txt' içinde mevcutsa, yeni dizeyle değiştirilecektir. Burada, büyük/küçük harfe duyarlı bir arama yapılacaktır.

#!/bin/bash

# Dosya adını atayın
dosya adı='Satış.txt'

# Arama dizesini alın
okuman -P 'Arama dizesini girin:'arama

# Değiştir dizesini alın
okuman -P 'Değiştirme dizesini girin:'yer değiştirmek

Eğer [[ $arama !='' && $değiştir !='' ]];sonra
sed -ben 's/$arama/$değiştir/' $dosya adı
olmak

Çıktı

Örnek 2: Dosyayı 'sed' Komutu ile 'g' ve 'i' Bayrağı ile Değiştirin

Aşağıdaki komut dosyası önceki örnek gibi çalışacak, ancak arama dizesi küresel olarak 'g' bayrağı için aranacak ve 'i' bayrağı için büyük/küçük harfe duyarlı olmayan arama yapılacaktır.

#!/bin/bash

# Arama dizesini alın
okuman -P 'Arama dizesini girin:'arama

# Değiştir dizesini alın
okuman -P 'Değiştirme dizesini girin:'yer değiştirmek

Eğer [[ $arama !='' && $değiştir !='' ]];sonra
sed -ben 's/$arama/$değiştir/vermek' 1 dolar
olmak

Çıktı

Örnek 3: Dosyayı 'sed' Komutu ve Eşleşen Rakam Kalıbı ile Değiştirin

Aşağıdaki komut dosyası, bir dosyadaki tüm sayısal içeriği arayacak ve içeriği aşağıdakileri ekleyerek değiştirecektir: '$' Sayıların başındaki sembol.

#!/bin/bash

# Komut satırı argüman değerinin var olup olmadığını kontrol edin
Eğer [ 1 dolar !='' ];sonra
# Rakam içeren tüm dizeleri arayın ve $ ekleyin
sed -ben 's/[0-9]{5}/$&/g' 1 dolar
olmak

Çıktı

Dosyadaki Dizeyi `awk` Komutuyla Değiştirin

NS ' awk' komut, bir dosyadaki dizeyi değiştirmenin başka bir yoludur, ancak bu komut, orijinal dosyayı ' gibi doğrudan güncelleyemez. ancak emretmek.

Örnek 4: Dosyayı 'awk' Komutuyla Değiştirin

Aşağıdaki komut dosyası, güncellenen içeriği temp.txt orijinal dosya tarafından yeniden adlandırılacak dosya.

#!/bin/bash

# Komut satırı argüman değerinin var olup olmadığını kontrol edin
Eğer [ 1 dolar !='' ];sonra
# Tarihe göre tüm dizeleri ara
awk '{sub('02/06/2020','12/06/2020')}1' 1 dolar >temp.txt&& mvtemp.txt1 dolar
olmak

Çıktı

Çözüm

Bu makale, bir dosyadaki belirli dizeleri değiştirmek için bash komut dosyalarının nasıl kullanılacağını gösterdi. Yukarıdaki örnekleri uyguladıktan sonra bir dosyadaki bir dizgiyi değiştirme görevi sizin için daha kolay hale gelecektir.