Mam ten plik:
names average
john:15.02
Mark:09.63
James:12.58
Chcę wyodrębnić z niego tylko średnie większe niż 10, więc wynik w tym przykładzie powinien wynosić:
15.02
12.58
command-line
text-processing
Haikel Fazzani
źródło
źródło
[[ $0 > 10 ]]
jako leksykalne porównanie - i w każdym razie nie jest zbyt pomocny dla wartości niecałkowitychZ grep będziesz musiał pracować z wyrażeniami regularnymi; na przykład
jak w przypadku sed:
Ale używanie RegEx na zamówionych danych jest podatne na błędy (z mojego doświadczenia) i trudne do odczytania ;-).
źródło
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
ised -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. Warto wspomnieć, że działa to tylko z> 1,> 10,> 100 itd., Np.> 20 byłoby niemożliwe.':[1-9][0-9]\+\.\?'
- dosłowną kropką dziesiętną \. jest opcjonalny i dopasowywany co najwyżej \ ?. (@dessert dziękuję za wskazanie ograniczenia mojej RegEx.)