Ksh Unix 변수에 저장된 파일을 읽습니다.

Ksh Unix 변수에 저장된 파일을 읽습니다.

변수에 저장된 파일을 읽는 데 문제가 있습니다. 간단해야 하는데 왠지 뭔가 빠졌고 무엇을 알아낼 수 없나요?

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}

관련 정보