sed는 변수로 전달될 때 숫자를 인식하지 못합니다.

sed는 변수로 전달될 때 숫자를 인식하지 못합니다.

이 표현은:

FN=27
LN=145
cat $FILENAME | sed -n $FN,$LNp

다음 오류와 함께 실패합니다: "sed: -e 표현식 #1, 문자 3: 예기치 않은 `,'" 그러나 실제 숫자를 사용하면 예상한 결과를 얻습니다. 포함된 특수 문자 및 후행 또는 선행 공백이 없습니다.

cat $FILENAME | sed -n 27,145p

여기서 무슨 일이 일어나고 있는 걸까요?

답변1

$LNp변수가 설정되지 않은 경우 sed명령은 다음과 같습니다(변수 인용을 잊어버렸기 때문에 기본값은 IFS라고 가정).

sed -n 27,

원하는 곳은 다음과 같습니다.

sed -n "$FN,${LN}p" < "$FILENAME"

쉘이 p변수 이름의 일부가 되지 않도록 지시합니다( sed -n "$FN,$LN"p이것도 괜찮습니다).

또는 번째 줄을 찾자마자 더 효율적으로 중지합니다 sed.$LN

sed "$FN,\$!d;${LN}q" < "$FILENAME"

또는

tail -n "+$FN" < "$FILENAME" | head -n "$((LN - FN + 1))"

관련 정보