1300 kelimeden oluşan çok satırlı çok uzun bir dizim var.Bash programlama Hızlı Arama ve Ekstraksiyon Metodu
DÜZENLEME: Dizgeden iki değeri aramak ve ayıklamak ve biçimlendirme ve ek işlemler için bir değişkene kaydetmek istiyorum.
Bir dizi ve devre hatlarının içine dize açmak ve ben de sadece tarafından dize arama yapabileceğinizi biliyor
while read -r line; do
arr+=("$line")
done <<< "$ACSCH"
for i in "${arr[@]}"
do
if [[ "$i" =~ "level 1: src="(.*)$ ]]; then
SRC=${BASH_REMATCH[1]}
fi
if [[ "$i" =~ "level 1: dst="(.*)$ ]]; then
DST=${BASH_REMATCH[1]}
fi
done
her satırı arayabilirsiniz:
if [[ "$ACSCH" =~ "src="([[:alnum:]]*) ]]; then
SRC=${BASH_REMATCH[1]}
fi
ama yok
Ek değişkeni nasıl arayacağımı biliyorsunuz. Tek düşünebildiğim yöntem, tüm dizgede arama yapılıyorsa başka bir yere yerleştirmektir
if [[ "$ACSCH" =~ "DST="([[:alnum:]]*) ]]; then
DST=${BASH_REMATCH[1]}
fi
Bunu yapmanın doğru yolu mu yoksa daha iyi bir yolu var mı?
Hangi yol daha hızlı olur; Değişkenlerimi, diğer yöntemimi ya da henüz bilmediğim başka bir yöntemi bulmak için her satırı arıyor ve bu yüzden burada yardım arıyorum.
** DÜZENLEME: Numune GİRİŞİ: ........ src = 19r4345e3e bilinmeyen uzunluğu
Numune ÇIKIŞI metninin dst arasındaki = 1kje3dkj35 kalanı diğer bazı metin: SRC = 19r4345e3e | DST = 1kje3dkj35
Sonra daha da benim SRC ve DST değişkenleri işleyebilir. **
teşekkürler! --E
Lütfen soruya o örnek giriş için örnek girişi ve istediğiniz çıktıyı ekleyin. – Cyrus
Smaple girişini eklemek istemiyorum çünkü büyük bir metin değişkeni. – eherr9633