Saya punya file ini:
names average
john:15.02
Mark:09.63
James:12.58
Saya ingin mengekstraksi hanya rata-rata lebih besar dari 10, jadi output dalam contoh ini harus:
15.02
12.58
command-line
text-processing
Haikel Fazzani
sumber
sumber
[[ $0 > 10 ]]
sebagai perbandingan leksikal - dan bagaimanapun, tidak banyak membantu untuk nilaiDengan grep Anda harus bekerja dengan ekspresi reguler; misalnya
seperti dengan sed:
Tetapi menggunakan RegEx pada data yang dipesan rentan kesalahan (dalam pengalaman saya) dan sulit dibaca ;-).
sumber
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
dansed -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. Perlu disebutkan bahwa ini hanya bekerja dengan> 1,> 10,> 100 dll., Mis.> 20 tidak mungkin.':[1-9][0-9]\+\.\?'
- titik desimal literal \. opsional dan cocok paling banyak sekali \ ?. (@Derima terima kasih telah menunjukkan batasan RegEx saya.)