이 코드가 있습니다.
while IFS= read
do
read -r
read -r
read -r
echo $REPLY
done <<< "$LINES"
행의 데이터는 다음과 같습니다.
----
Test
----
1,2,3
1,2,4
etc
처음 3개 행을 건너뛰고 4행부터 처리를 시작하고 싶습니다. read -r을 시도했지만 작동하지 않는 것 같습니다. 나는 출력을 원한다 :
1,2,3
1,2,4
etc
답변1
이것은 bash에 더 특화된 구문입니다.
i=3 n=0
while read -r line; do
((n >= i )) && echo "$line"
((n++))
done < file
답변2
변수의 내용이 앞서 언급한 내용과 유사하다는 점을 고려하면, 4번째 줄부터 데이터를 읽어오는 것도 $LINE
해결책 중 하나이다. 당신은 이것을 할 수 있습니다,
tail +4 <<< "$LINE"
$LINE
그러면 네 번째 줄 부터 마지막 줄까지 모든 줄이 인쇄됩니다 .
결과를 내부적으로 사용하려는 경우 while
이는 더 잘 작동합니다 .
while IFS= read -r; do echo $REPLY; done <<< "$(tail +4 <<< "$LINE")"
.
답변3
전선으로 무엇을 하고 싶은지에 따라 다르지만, 전선으로 감쌀 수 있다면다시 전화하다bash 버전 4 이상이면 mapfile
(또는 동의어 readarray
) 및 -s
(건너뛰기) 옵션을 사용할 수 있습니다.
전임자. 주어진
$ echo "$LINES"
----
Test
----
1,2,3
1,2,4
etc
그런 다음 정의한 후
myfunc() { printf "%s\n" "$2"; }
넌 할 수있어
$ mapfile -t -s3 -c1 -C 'myfunc' <<< "$LINES"
1,2,3
1,2,4
etc