"읽는 동안" 내의 특정 줄부터 시작하여 파일을 읽는 방법은 무엇입니까?

"읽는 동안" 내의 특정 줄부터 시작하여 파일을 읽는 방법은 무엇입니까?

내가 원하는 것은 이와 같은 특정 수의 줄을 지정 lineNumberIs=3하고 읽는 동안 이 세 번째 줄에서 시작하거나 줄 번호가 무엇인지 알려주고 나중에 가져온 줄에서 일부 명령을 실행하기 위해 와드 뒤에 줄을 가져오는 것입니다. 그런 것

 while read line from $lineNumberIs
    do
    **some commands not just echo nor printing on the screen** 
    done < $dataFile

답변1

while IFS= read -r line; do
    # ...
done < <(tail -n "+$lineNumberIs" $dataFile)

tail -n +K(더하기 기호 사용)은 tail이 지정된 줄 번호에서 시작하도록 지시합니다(참조).맨 페이지).

비트 <(...)프로세스 대체. 이를 통해 명령 순서를 지정하고 bash가 파일처럼 명령 순서를 읽을 수 있습니다. 파이프라인에서 생성된 하위 셸의 효과를 피하려는 경우 매우 편리합니다.

IFS= read -r공백이나 이스케이프 시퀀스를 제거하지 않고 파일에 나타나는 줄을 정확히 읽는 데 사용됩니다.

답변2

#!/bin/bash
if [ $# -eq 0 ]; then
        echo "Please execute $0 with linestoskip parameter"
        exit 0
fi
linestoskip=$1
Counter=0
dataFile='/etc/fstab'
while read line
do
        if [ $Counter -ge $linestoskip ]; then
                echo $line
        fi
        Counter=`expr $Counter + 1`
done < $dataFile

이 스크립트는 건너뛸 줄 수를 매개변수로 예상합니다. if 조건 내부에서 원하는 것은 무엇이든 할 수 있습니다.

답변3

매우 간단한 해결책 -

tail -n +K filename

여기서 K = 파일을 읽으려는 줄 번호입니다. 그러면 K번째 줄부터 끝까지 파일 읽기가 시작됩니다.

관련 정보