이 표현은:
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))"