Bir Oracle RAC ortamından doğru olduğundan emin olmak için bir TNS girdisinin içeriğini tnsnames.ora dosyasından yazdırmaya çalışıyorum. Geri alacaktnsnames.ora karşı regex w/grep
grep -A 4 "mydb.mydomain.com" $ORACLE_HOME/network/admin/tnsnames.ora
:
Yani böyle bir şey yaparsanız
Benim istediğimmydb.mydomain.com =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = myhost.mydomain.com)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME=mydb)))
.
export [email protected]:1521/mydb
Yani yukarıdaki dize dışına TNS takma mydb.mydomain.com almak gerekir: Şimdi kabuk komut dosyası gibi çağrılan zaman bir ortam değişkeni harici bir program tarafından JDBC bağlantı dizesi için ayarlanan var. Birden fazla eşleşmeyi nasıl yapacağımdan emin değilim ve eşleşmeleri düzenli ifadelerle yeniden sırala ve biraz yardıma ihtiyacım var.
grep @.+: $DB_URL
Ben
@myhost.mydomain.com:
alacak varsayalım ama
mydb.mydomain.com
Bu yüzden bu kısmında şaşırıp arıyorum. TNS takma adını nasıl alabilirim ve daha sonra TNS girişi için metni görüntülemek için ilk grep ile birleştirip birleştiririm?
Teşekkür
güncelleme:
@ mklement0 @Walter A - Ben senin yollarını denedik ama onlar aradığım tam olarak ne.
echo "@myhost.mydomain.com:1521/mydb" | grep -Po "@\K[^:]*"
echo "@myhost.mydomain.com:1521/mydb" | sed 's/.*@\(.*\):.*/\1/'
echo "@myhost.mydomain.com:1521/mydb" | cut -d"@" -f2 | cut -d":" -f1
echo "@myhost.mydomain.com:1521/mydb" | tr "@:" "\t" | cut -f2
echo "@myhost.mydomain.com:1521/mydb" | awk -F'[@:]' '{ print $2 }'
Bütün bu yöntemler beni geri almak: myhost.mydomain.com
Ne aradığım aslında: mydb.mydomain.com
Son güncellemenizi gördüm ... şu an tasarlandığı şekilde çalışıyor gibi görünüyor. Teşekkürler! – dave111
@ dave111: Bunu duyduğuma sevindim. Sorunuz başlamış olmak için iyi sunuldu, ancak görebildiğiniz gibi, “mydb” ve “myhost” arasındaki benzerlik, hem ben hem de Walter A'nın farkı kaçırmasına neden oldu. Kendine not: daha dikkatli okuyun. Sizin için öneri: Belki de insanların sizin sorunuzda gözden kaçırdığı şeyleri açıkça vurgulayın. – mklement0