변수에 저장된 파일을 읽는 데 문제가 있습니다. 간단해야 하는데 왠지 뭔가 빠졌고 무엇을 알아낼 수 없나요?
count=0
mip="$(<fila.txt)"
while read -r line
do
count=`expr $count + 1`
echo "line $count "
done < $mip
이렇게 행의 개수를 세는 아주 기본적이고 간단한 스크립트인데, 변수를 사용하게 되면완료 < $mip파일 이름 대신<fila.txt를 완료하세요.. 스크립트는 파일 내용만 출력합니다.고양이 필라.txt행을 계산하는 대신.
line 1
line 2
line 3
line 4
line 5
line 6
어떤 아이디어가 있나요? ?
답변1
done <$mip
여전히 이것이 $mip
파일 이름이라고 가정합니다. 그렇지 않습니다.
당신이 원하는 것은 다음과 같을 수 있습니다
printf '%s\n' "$mip" |
while IFS= read -r line; do
printf 'line %d\n' "$(( ++count ))"
done
보다 직접적인 해결책은
while IFS= read -r line; do
printf 'line %d\n' "$(( ++count ))"
done <filea.txt
심지어
cat -n filea.txt | sed 's/^ *\([0-9]*\).*$/line \1/'
cat
마지막 명령은 파일의 행을 열거하고 sed
실제 파일 내용을 삭제하는 데 사용됩니다 .
또는 을 사용하면 awk
더 간단합니다.
awk '{ printf("line %d\n", NR) }' filea.txt
또는 먼저 파일의 줄 수를 계산하는 경우:
count=$( sed -n '$=' filea.txt ) # or: count=$( wc -l <filea.txt )
printf 'line %d\n' {1..$count}