Kısa çizgiden sonra dizenin son bölümünü al


10

Kısa iplerle ayrılmış bir dizenin son kısmını çıkarmak için basit bir komut satırı var mı? Örneğin, ben ayıklamak istiyorum 123den foo-bar-123.

Yanıtlar:


23

Bash'in parametre genişletmesini kullanabilirsiniz :

string="foo-bar-123" && printf "%s\n" "${string##*-}"
123

Awk ile başka bir işlem kullanmak istiyorsanız:

echo "foo-bar-123" | awk -F- '{print $NF}'

Veya Sed'i tercih ediyorsanız:

echo "foo-bar-123" | sed 's/.*-//'

Gibi bir hafif dış işlem olup, Glenn Jackman anlaşılacağı olduğu cut:

cut -d- -f3 <<< "$string"

shell parametre genişletmesi en iyi cevaptır. Hafif bir harici alet cut:cut -d- -f3 <<< "$string"
glenn jackman

1
@jlennjackman - re cut:; Gerçekten de, ancak son alanın numarası biliniyorsa (soru biraz belirsiz olduğu için: Son kısmı çıkarmak için basit bir komut satırı var mı? ... )
don_crissti

2
@don_crissti, gerçekten. Bir verebilir yapmak rev <<< "$string" | cut -d- -f1 | rev, ama sonra uzak param.expansion basitliğinden veering ediyoruz.
glenn jackman


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.