Yanıtlar:
sed 's/.$//'
Son karakteri kaldırmak için.
Ancak bu özel durumda, şunları da yapabilirsiniz:
df -P | awk 'NR > 1 {print $5+0}'
Aritmetik ifade ( $5+0
) awk
ile 5. alanı sayı olarak yorumlamaya zorlarız ve sayıdan sonraki herhangi bir şey göz ardı edilir.
GNU’ya df
( -h
burada zaten ihtiyaç duyulmasa da, zaten bir GNU uzantısıdır) disk kullanım yüzdesinin yalnızca çıktısı verilebileceğini unutmayın:
df --output=pcent | tail -n +2 | tr -cd '0-9\n'
(kuyruk başlıkları atlar ve tr, rakamlardan ve satır sınırlayıcılardan başka her şeyi kaldırır).
Linux'ta ayrıca bakınız:
findmnt -no USE%
{print +$5}
aynı zamanda çalışacak ...
awk
bu işe yaramazsa uygulamalarda , +
tekli operatör sadece göz ardı edilir ve sayısal için dizeleri dönüşümünü zorlamaz.
İle sed
, bu oldukça kolaydır:
$ cat file
Use%
22%
1%
1%
59%
51%
63%
5%
$ sed 's/.$//' file
Use
22
1
1
59
51
63
5
Sözdizimi s(ubstitute)/search/replacestring/
. .
Herhangi bir karakter ve işaret $
çizgisinin sonunu. Yani .$
sadece son karakteri kaldıracak.
Bu durumda, komutun tamamı şöyle görünür:
df -h | awk '{ print $5}' | sed 's/.$//'
sed
fazlalık: içinde yapılabilir awk
:df -h | awk '{gsub(/%/,""); print $5}'
İki çözümüm var:
kesmek: echo "somestring1" | rev | cut -c 2- | rev
Burada dizgiyi ters çevirir ve dizgiyi 2. karakterden keser ve tekrar tersine çevirirsiniz.
sed: echo "somestring1" | sed 's/.$//'
Burada düzenli ifade arayacaktır .$
bir son karakteri tarafından takip herhangi bir karakter anlamına gelir ve boş ile değiştirin //
(iki eğik çizgiler arasında)
Awk'ta, birini yapabilirsin
awk '{sub(/%$/,"",$5); print $5}'
awk '{print substr($5, 1, length($5)-1)}'
başka bir yaklaşım:
mapfile -t list < <(df -h)
printf '%s\n' "${list[@]%?}"
Bir işleve dönüştürün:
remove_last() {
local char=${1:-?}; shift
mapfile -t list < <("$@")
printf '%s\n' "${list[@]%$char}"
}
O zaman şöyle söyle:
remove_last '%' df -h
mapfile
bir bash4 özelliğidir.
Buradaki mandal , kaldırmak için bir karakter sağlamanız gerektiğidir ; Son karakterin ne olduğu gibi olsun istiyorsan, geçmelisin '?'
veya ''
. tırnak gerekli.
df -h | awk 'NR > 1{ print $5 }' | cut -d "%" -f1
cut -d '%' -f1
her şeyi elde etmek için doğru cevap hangisidir ?
sed -ie '$d' filename
here -i is to write changes
e means expression
$ means last line
d means delete
Note:Without -e option $ wont work
İsteğe bağlı : 1. ve son satırları silmek için sed -ie '1d;$d'
dosya adı kullanın.
%
işaret mi?