bash에서 wc에서 정수만 가져옵니다.
wc가 bash에서 반환하는 정수를 얻을 수 있는 방법이 있습니까?
기본적으로 파일 이름 뒤에 줄 번호와 단어 수를 화면에 쓰고 싶습니다.
output: filename linecount wordcount
지금까지 제가 가진 것은 다음과 같습니다.
files=\`ls`
for f in $files;
do
if [ ! -d $f ] #only print out information about files !directories
then
# some way of getting the wc integers into shell variables and then printing them
echo "$f $lines $words"
fi
done
가장 간단한 답변:
wc < filename
정당:
wc -l < file_name
그 일을 할 것입니다. 이 가 붙은 이 그나이출다같접은포공으로 포함됩니다.wc
번호를 오른쪽으로 이동합니다.
명령을 사용하여 다음의 첫 단어만 가져올 수 있습니다.wc
카운트 " " " " (으"로 표시됨
lines=`wc -l $f | cut -f1 -d' '`
words=`wc -w $f | cut -f1 -d' '`
wc $file | awk {'print "$4" "$2" "$1"'}
레이아웃에 따라 필요에 따라 조정합니다.
또한 부정(디렉토리가 아님)보다 긍정적인 논리("파일")를 사용하는 것이 좋습니다.
[ -f $file ] && wc $file | awk {'print "$4" "$2" "$1"'}
때때로 wc는 서로 다른 플랫폼에서 서로 다른 형식으로 출력합니다.예:
OS X의 경우:
$ echo aa | wc -l
1
Centos에서:
$ echo aa | wc -l
1
따라서 컷만 사용하면 번호가 검색되지 않을 수 있습니다.에 대신해요세보요세를 시도해 보세요.tr
공백 문자 삭제하기
$ echo aa | wc -l | tr -d ' '
승인된/일반적인 답변은 OSX에서 작동하지 않습니다.
다음 중 하나는 bsd 및 리눅스에서 휴대할 수 있어야 합니다.
wc -l < "$f" | tr -d ' '
OR
wc -l "$f" | tr -s ' ' | cut -d ' ' -f 2
OR
wc -l "$f" | awk '{print $1}'
을 파일이름다음리경디우는하션렉로로 ,wc
출력에서 파일 이름을 생략합니다.
배쉬:
read lines words characters <<< $(wc < filename)
또는
read lines words characters <<EOF
$(wc < filename)
EOF
사하는대를 사용하는 에.for
의 합니다.ls
수행:
for f in *
공백이 포함된 파일 이름이 있는 경우 작동합니다.
만약 당신이 글로빙을 사용할 수 없다면, 당신은 파이프를 사용해야 합니다.while read
슬롯:슬라이드:
find ... | while read -r f
또는 프로세스 대체를 사용합니다.
while read -r f
do
something
done < <(find ...)
파이작전화걸를있여습다니가로 전화할 수 .wc
다음과 같은 방법을 사용하여 추가 프로세스에 대한 배관 작업을 방지합니다.
lines=$((`wc -l "$f"`))
words=$((`wc -w "$f"`))
그$((...))
bash의 산술 확장입니다.출력에서 공백을 제거합니다.wc
이 경우에는
줄 수 또는 단어 수가 필요한 경우 이 솔루션이 더 의미가 있습니다.
와 함께 하는건 어때요?sed
?
wc -l /path/to/file.ext | sed 's/ *\([0-9]* \).*/\1/'
typeset -i a=$(wc -l fileName.dat | xargs echo | cut -d' ' -f1)
숫자 결과에 대해 다음을 시도합니다.
$( -l < $nlines=$( wc -l < $myfile )
이와 같은 것이 도움이 될 수 있습니다.
#!/bin/bash
printf '%-10s %-10s %-10s\n' 'File' 'Lines' 'Words'
for fname in file_name_pattern*; {
[[ -d $fname ]] && continue
lines=0
words=()
while read -r line; do
((lines++))
words+=($line)
done < "$fname"
printf '%-10s %-10s %-10s\n' "$fname" "$lines" "${#words[@]}"
}
행(1)wc
번, (변수를 , , 한불필 (2) 요한할않지,
read lines words <<< $(wc < $f | awk '{ print $1, $2 }')
전체 코드:
for f in *
do
if [ ! -d $f ]
then
read lines words <<< $(wc < $f | awk '{ print $1, $2 }')
echo "$f $lines $words"
fi
done
출력 예:
$ find . -maxdepth 1 -type f -exec wc {} \; # without formatting
1 2 27 ./CNAME
21 169 1065 ./LICENSE
33 130 961 ./README.md
86 215 2997 ./404.html
71 168 2579 ./index.html
21 21 478 ./sitemap.xml
$ # the above code
404.html 86 215
CNAME 1 2
index.html 71 168
LICENSE 21 169
README.md 33 130
sitemap.xml 21 21
답변된 질문에서 제안된 해결책은 다윈 커널에 적용되지 않습니다.
모든 UNIX 시스템에서 작동하는 다음 솔루션을 고려해 보십시오.
- 파일의 줄 수를 정확하게 인쇄합니다.
wc -l < file.txt | xargs
- 파일의 문자 수를 정확하게 인쇄합니다.
wc -m < file.txt | xargs
- 파일의 바이트 수를 정확하게 인쇄합니다.
wc -c < file.txt | xargs
- 파일의 단어 수를 정확하게 인쇄:
wc -w < file.txt | xargs
스택 오버플로에 대한 예제가 있는 훌륭한 솔루션이 있습니다.
가장 간단한 솔루션을 여기에 복사합니다.
FOO="bar"
echo -n "$FOO" | wc -l | bc # "3"
이 페이지들을 병합해야 할까요?
사용해 보십시오.
wc `ls` | awk '{ LINE += $1; WC += $2 } END { print "lines: " LINE " words: " WC }'
라인 카운트와 워드 카운트(LINE 및 WC)를 생성하고 wc에서 추출한 값(첫 번째 열 값에 $1, 두 번째 열 값에 $2 사용)으로 증가시킨 후 최종적으로 결과를 출력합니다.
"기본적으로 파일 이름 뒤에 줄 번호와 단어 수를 화면에 쓰고 싶습니다."
answer=(`wc $f`)
echo -e"${answer[3]}
lines: ${answer[0]}
words: ${answer[1]}
bytes: ${answer[2]}"
출력: myfile.txt 행: 10 단어: 20 바이트: 120
files=`ls`
echo "$files" | wc -l | perl -pe "s#^\s+##"
다음에 대해 입력 리디렉션을 사용해야 합니다.wc
:
number_of_lines=$(wc -l <myfile.txt)
당신의 맥락에서 각각
echo "$f $(wc -l <"$f") $(wc -w <"$f")"
언급URL : https://stackoverflow.com/questions/3746947/get-just-the-integer-from-wc-in-bash
'programing' 카테고리의 다른 글
기계는 어디에 있습니까?구성? (0) | 2023.05.06 |
---|---|
SQL Server에서 MSDTC를 활성화하려면 어떻게 해야 합니까? (0) | 2023.05.06 |
iOS 시뮬레이터에서 스크린샷 찍기 (0) | 2023.05.06 |
Mongoose: aggregate를 함께 사용하는 방법 (0) | 2023.05.06 |
Azure Blob 400 컨테이너 생성 시 잘못된 요청. (0) | 2023.05.06 |