İlk görev, oranı o satırdan çıkarmak. GNU grep (gömülü olmayan Linux veya Cygwin) ile -o
seçeneği kullanabilirsiniz . İstediğiniz kısım yalnızca rakam içeren ve ardından bir %
işarettir. %
Kendisini çıkarmak istemiyorsan , ek bir numaraya ihtiyacın var: sıfır genişlikte bir bakış açısı iddiası , ancak hiçbir şey takip etmiyor, ancak hiçbir şey takip etmiyorsa %
.
command1 -p=aaa -v=bbb -i=4 | grep -o -P '[0-9]+(?=%)'
Başka bir olasılık sed kullanmaktır. Bir çizginin bir kısmını sed'de çıkarmak için, s
komutu tüm çizgiyle eşleşen bir regex ile (ile başlayan ^
ve biten $
), bir grupta tutulacak kısımla ( \(…\)
) kullanın. Tüm çizgiyi, tutulacak grupların içeriğiyle değiştirin. Genel olarak, -n
varsayılan yazdırmayı kapatma ve p
değiştiriciyi çıkarılacak bir şeyin olduğu satırlara yazdırma seçeneğine geçin (burada tek bir satır olması önemli değil). Bkz eşleşen bir desen sonra hattın sadece bir bölümünü iade ve çevredeki karakterleri yazdırmadan 'sed' ile eşleşen bir düzenli ifade ayıklanıyor daha sed hileler için.
command1 -p=aaa -v=bbb -i=4 | sed 's/^.*rate(\([0-9]*\)%).*$/\1/'
Yine sedden daha esnek, garip. Awk, her satır için talimatları küçük bir zorunlu dilde yürütür. Oranı buraya çekmenin birçok yolu var; İkinci alanları seçiyorum (alanlar varsayılan olarak boşluklarla sınırlandırılmış) ve içindeki rakam olmayan tüm karakterleri kaldırıyorum.
command1 -p=aaa -v=bbb -i=4 | awk '{gsub(/[^0-9]+/, "", $2); print $2}'
Şimdi oranı çıkardığın bir sonraki adım, bunu argüman olarak atmak command2
. Bunun için bir araç bir emirdir . İçine bir komut koyarsanız $(…)
(dolar-parantez), çıktısı komut satırına yerleştirilir. Komutun çıktısı, her boşluk bloğunda ayrı sözcüklere bölünür ve her sözcük bir joker desen olarak değerlendirilir; Böyle olup istemedikçe, komut ikamesi sonuna çift tırnak koyun: "$(…)"
. Çift tırnak ile, komutun çıktısı doğrudan tek bir parametre olarak kullanılır (tek dönüşüm, çıktının sonundaki yeni satırların kaldırılmasıdır).
command2 -t "$(command1 -p=aaa -v=bbb -i=4 |
sed 's/^.*rate(\([0-9]*\)%).*$/\1/')"