Linux Bash 명령을 통해 파일에서 100일보다 긴 가동 시간을 검색할 수 있는 방법이 있습니까?
예를 들어 다음이 file1
포함됩니다.
Uptime is 172 days
Uptime is 562 days
Uptime is 30 days
downtime is 197 days
다음과 같은 출력을 얻으려면 어떤 명령을 사용할 수 있습니까?
Uptime is 172 days
Uptime is 562 days
답변1
간단한 awk
해결책은 다음과 같습니다.
awk '$1 == "Uptime" && $3 > 100 {print}' file1
Uptime is 172 days
Uptime is 562 days
답변2
...좀 더 복잡한 bash
솔루션은 다음과 같습니다.
while read -r a b c d; do
[[ $a = Uptime && $c -gt 100 ]] && printf '%s %s %s %s\n' $a $b $c $d
done < uptime
Uptime is 172 days
Uptime is 562 days
답변3
그리고 grep
확장 정규식을 사용하는 솔루션은 다음과 같습니다.
grep -E 'Uptime is [[:digit:]]{3}' uptime | \
grep -Ev 'Uptime is 100'
이렇게 하면 "가동 시간은 " 문자열이고 그 뒤에 최소 3자리 숫자가 오고 정확한 숫자 100
와 줄 끝이 옵니다.
답변4
내 댓글에서 변환 중입니다.
grep
와 함께 사용 awk
:
grep "Uptime" file1 | awk '$3 > 100 {print}'
"가동 시간"을 찾은 file1
다음 세 번째 열을 살펴보고 100보다 큰 경우 인쇄합니다.