bash echo 파일 이름없이 bash 변수에 주어진 파일 줄 수
bash 스크립트에 다음 세 가지 구성이 있습니다.
NUMOFLINES=$(wc -l $JAVA_TAGS_FILE)
echo $NUMOFLINES" lines"
echo $(wc -l $JAVA_TAGS_FILE)" lines"
echo "$(wc -l $JAVA_TAGS_FILE) lines"
그리고 스크립트가 실행될 때 둘 다 동일한 출력을 생성합니다.
121711 /home/slash/.java_base.tag lines
121711 /home/slash/.java_base.tag lines
121711 /home/slash/.java_base.tag lines
즉, 파일 이름도 에코됩니다 (원하지 않습니다). 이 스크립 렛이 실패하는 이유는 무엇이며 어떻게 출력해야합니까?
121711 lines
?
자체 데이터를 사용한 예
wc에 인수로 파일 이름을 전달하는 대신 JAVA_TAGS_FILE의 리디렉션을 사용하여 NUMOFLINES 변수에 파일 이름이 포함되지 않도록 할 수 있습니다 . 예를 들면 :
NUMOFLINES=$(wc -l < "$JAVA_TAGS_FILE")
설명 : 파이프 또는 리디렉션을 사용하여 출력에서 파일 이름 방지
WC 입력 파이프 또는 리디렉션 연산자에서 촬영하는 경우 유틸리티는 출력 파일의 이름을 출력하지 않을 것이다. 다음과 같은 다양한 예를 고려하십시오.
# wc shows filename when the file is an argument
$ wc -l /etc/passwd
41 /etc/passwd
# filename is ignored when piped in on standard input
$ cat /etc/passwd | wc -l
41
# unusual redirection, but wc still ignores the filename
$ < /etc/passwd wc -l
41
# typical redirection, taking standard input from a file
$ wc -l < /etc/passwd
41
보시다시피 wc 가 파일 이름을 인쇄 하는 유일한 시간 은 표준 입력의 데이터가 아닌 인수로 전달 될 때입니다. 어떤 경우에는 파일 이름이 인쇄되기를 원할 수 있으므로 언제 표시되는지 이해하는 것이 유용합니다.
wc
파일 이름을주지 않으면 파일 이름을 가져올 수 없습니다.
wc -l < "$JAVA_TAGS_FILE"
awk를 사용할 수도 있습니다.
awk 'END {print NR,"lines"}' filename
또는
awk 'END {print NR}' filename
(Mac 및 기타 Unix에 적용)
실제로 wc 접근 방식에 문제가 있습니다. 줄 끝 기호로 끝나지 않으면 마지막 줄을 계산하지 않습니다.
대신 사용
nbLines=$(cat -n file.txt | tail -n 1 | cut -f1 | xargs)
또는 더 좋습니다 (gniourf_gniourf에게 감사드립니다) :
nblines=$(grep -c '' file.txt)
참고 : chilicuil의 awk 접근 방식도 작동합니다.
매우 간단합니다.
NUMOFLINES=$(cat $JAVA_TAGS_FILE | wc -l )
또는
NUMOFLINES=$(wc -l $JAVA_TAGS_FILE | awk '{print $1}')
I normally use the 'back tick' feature of bash
export NUM_LINES=`wc -l filename`
Note the 'tick' is the 'back tick' e.g. ` not the normal single quote
'Nice programing' 카테고리의 다른 글
tkinter에서 두 프레임 간 전환 (0) | 2020.10.11 |
---|---|
.htaccess 하위 도메인을 디렉토리에 다시 작성 (0) | 2020.10.11 |
자체 참조 루프 감지 됨-WebApi에서 브라우저로 데이터 가져 오기 (0) | 2020.10.11 |
C #에서 XDocument를 사용하여 XML 파일 생성 (0) | 2020.10.11 |
하나의 태그에 대한 선택기 바로 뒤에 다른 태그 (0) | 2020.10.10 |