답변:
awk
awk -F: '{if($2>10)print$2}' <filename
-F:
– F
필드 구분 기호를:
{if($2>10)print$2}
– 각 행에 대해 2
nd 필드가 >10
인 경우 테스트 print
하십시오.<filename
– 쉘이 파일을 열어 보도록하라. 그렇게하는 filename
것보다 낫다 . 주제에 대한 Stéphane Chazelas의 답변을awk
보라.$ <filename awk -F: '{if($2>10)print$2}'
15.02
12.58
공백을 추가하고 패턴을 괄호 외부에 넣을 수도 있습니다. 따라서 Stefan은이 를 지적합니다.
awk -F: '{if($2>10)print$2}' <filename
awk -F: '{ if ( $2 > 10 ) print $2 }' <filename
awk -F: '$2>10{print$2}' <filename
awk -F: '$2 > 10 { print $2 }' <filename
[[ $0 > 10 ]]
어휘 비교를 - 그리고 어떤 경우에, 많은 비 정수 값에 도움이되지 않습니다
grep을 사용하면 정규식을 사용해야합니다. 예 :
grep -E ':[^0-9]*[1-9][0-9][0-9]*\.' file | cut -d':' -f2
sed와 마찬가지로 :
sed -n 's/.*:[^0-9]*\([1-9][0-9][0-9]*\..*\)/\1/p' file
그러나 정렬 된 데이터에 RegEx를 사용하면 오류가 발생하기 쉽고 (내 경험으로는) 읽기가 어렵습니다 ;-).
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
및 로 단축 할 수 있습니다 sed -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. 이것이> 1,> 10,> 100 등에서 만 작동한다는 점은 언급 할 가치가 있습니다. 예를 들어> 20은 불가능합니다.
':[1-9][0-9]\+\.\?'
.-리터럴 소수점 \. 선택 사항이며 최대 \\와 일치합니다. (RegEx의 제한 사항을 지적 해 주셔서 감사합니다.)