Linux Shell 순환 에서 보 여 주 는 진도 백분율 의 실현 방법
내 가 몇 만 줄 의 서 류 를 처리 해 야 할 때 처리 해 야 할 시간 은 비교적 길다.내 가 처음에 생각 한 것 은 한 줄 도 처리 하지 않 고\#번 호 를 출력 하 는 것 이다.하지만 이렇게 하면 많은\#호가 나 올 것 이다.한 줄 에 놓 아 도 매우 우아 하지 않다.그래서 진도 백분율 을 보 여 주 는 스 크 립 트 를 실현 하고 싶 습 니 다.
사고의 방향 을 실현 하 다.
그게 필요 해.우리 가 점차적으로 실현 하 자.
파일 가 져 오 는 줄 수
이것 은 비교적 간단 합 니 다.wc-l$file 로 얻 을 수 있 습 니 다.그러나 얻 은 결 과 는 만 족 스 럽 지 못 했다.
999 3.log
결과 의 앞 에 몇 개의 빈 칸 이 있 는데,나 는 빈 칸 을 없 애 야 하기 때문에 코드 는 바 뀌 었 다.
wc -l $file | sed 's/^[ \t]*//g'
이렇게 해서 시작 하 는 빈 칸 을 없 애고 빈 칸 으로 나 누 어 첫 번 째 를 취하 면 됩 니 다.cut 로 이 루어 집 니 다.
wc -l $file | sed 's/^[ \t]*//g' | cut -d ' ' -f1
OK,몇 개의 명령 의 조합 을 통 해 줄 의 숫자 를 쉽게 얻 을 수 있 습 니 다.echo 단일 줄 표시
echo -en '\b\b\b\b'
위 와 같이 커서 를 네 자리 앞 당 겨 내용 을 입력 하 는 것 입 니 다.\b.하 나 를 앞 당 겨 서 몇 개 를 입력 하면 몇 개 입 니 다.만약 에 시작 이 되면 앞으로 옮 길 수 없 기 때문에 몇 개 를 더 입력 하 는 것 은 문제 가 없습니다.최종 구현 코드 는 다음 과 같 습 니 다.
# i
i=1
# 3.log , l
l=$(wc -l 3.log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)
#
while read line; do
#
echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%'
# i++
((i++))
# 3.log
done < 3.log
# OK, ,
echo -e '\b\b\b\bOK '
실현 효 과 는 다음 과 같다.좋아,간단 한 몇 줄 코드 를 통 해 내 가 원 하 는 효 과 를 실현 했다.
위의 스 크 립 트 는 모두 mac 에서 테스트 를 통 과 했 습 니 다.Linux 에서 약간 다 를 수 있 습 니 다.
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.