Shell 파일 내용 읽 기
2983 단어 #상용 스 크 립 트 개발
Liux 에 서 는 한 파일 을 한 줄 씩 읽 는 방법 이 많 습 니 다. 그 중에서 가장 많이 사용 되 는 것 은 아래 스 크 립 트 의 방법 이 고 효율 이 가장 높 으 며 가장 많이 사용 하 는 방법 입 니 다.여러분 에 게 직관 적 인 느낌 을 주기 위해 서 우 리 는 큰 파일 을 만 드 는 방식 으로 각종 방법의 집행 효율 을 검증 할 것 입 니 다.방법 1: while 순환 중 집행 효율 이 가장 높 고 가장 많이 사용 되 는 방법.
function while_read_LINE_bottm() {
While read LINE
do
echo $LINE
done < $FILENAME
}
注释:我习惯把这种方式叫做read釜底抽薪,因为这种方式在结束的时候需要执行文件,就好像是执行完的时候再把文件读进去一样。
방법 2: 재 정립 법;파이프 법: cat $FILENAME | while read LINE
Function While_read_LINE() {
cat $FILENAME | while read LINE
do
echo $LINE
done
}
注释:我只所有把这种方式叫做管道法,相比大家应该可以看出来了吧。当遇见管道的时候管道左边的命令的输出会作为管道右边命令的输入然后被输入出来。
방법 3: 파일 설명 기법
function while_read_line_fd() {
exec 3
방법 4 for 순환.
function for_in_file(){
for i in `cat $FILENAME`
do
echo $i
done
}
注释:这种方式是通过for循环的方式来读取文件的内容相比大家很熟悉了,这里不多说。
각 방법 을 시험 해 보 니 그 방법의 집행 효율 이 가장 높다.
우선 스 크 립 트 (스 크 립 트 첨부 파일 참조) 로 70000 줄 의 파일 을 만 듭 니 다. 파일 위 치 는/script/bigfile 입 니 다.그리고 아래 스 크 립 트 를 통 해 각 방법의 실행 효율 을 테스트 합 니 다. 스 크 립 트 는 간단 하고 설명 하지 않 습 니 다.
#!/bin/bash
FILENAME="$1"
TIMEFILE="/tmp/loopfile.out" > $TIMEFILE
SCRIPT=$(basename $0)
function usage(){
echo -e "
USAGE: $SCRIPT file
"
exit 1
}
function while_read_bottm(){
while read LINE
do
echo $LINE
done < $FILENAME
}
function while_read_line(){
cat $FILENAME | while read LINE
do
echo $LINE
done
}
function while_read_line_fd(){
exec 3> $TIMEFILE
echo -e "
"
echo -e "method 2:"
echo -e "function while_read_line "
time while_read_line >> $TIMEFILE
echo -e "
"
echo -e "method 3:"
echo "function while_read_line_fd"
time while_read_line_fd >>$TIMEFILE
echo -e "
"
echo -e "method 4:"
echo -e "function for_in_file"
time for_in_file >> $TIMEFILE
스 크 립 트 실행 후: [root@localhost셸]\#./hile/script/bigfile 스 크 립 트 출력 내용: method 1: function whileread_bottm
real 0m5.689s user 0m3.399s sys 0m1.588s
method 2: function while_read_line
real 0m11.612s user 0m4.031s sys 0m4.956s
method 3: function while_read_line_fd
real 0m5.853s user 0m3.536s sys 0m1.469s
method 4: function for_in_file
real 0m5.153s user 0m3.335s sys 0m1.593s
다음은 우 리 는 각 방법 에 대해 속도 에 따라 순 서 를 매 긴 다.real 0 m 5.153s method 4 (for 순환 법) real 0 m 5.689 s method 1 (while 솥 밑 에서 임금 을 뽑 는 법) real 0 m 5.853s method 3 (표지 부 법) real 0 m 11.612 s method 2 (파이프라인 법)
이 를 통 해 알 수 있 듯 이 각 방법 에서 for 문장의 효율 이 가장 높 고 while 순환 에서 파일 을 읽 을 때 while read LINE do echo $LINE
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.