산술적인 것을 표현하는 방법에는 새로운 것과 오래된 것 등 여러 가지가 있습니다. 하지만 나는 이 글을 효율적이고 잘 쓰고 싶다.
sed -n '$START,$ENDp;$ENDq' < data.tex
어느 출력
sed: 1: "$START,$ENDp;$ENDq": invalid command code S
총 코드
#!/bin/bash
function getStart {
local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
echo $START
}
function getEnd {
local END="$(awk '/end\{document\}/{ print NR; exit }' data.tex)"
echo $END
}
START=$(getStart)
(( START-- ))
echo $START
END=$(getEnd)
(( END++ ))
echo $END
sed -n '$START,$ENDp;$ENDq' < data.tex
여기서 SED는 함수의 지역 변수에서 줄 번호를 가져옵니다. SED에 대한 변수를 효율적으로 표현하여 첫 번째 줄을 어떻게 표현할 수 있나요?
답변1
변수는 작은따옴표로 확장되지 않습니다. 큰따옴표를 사용하세요.
sed -n "$START,${END}p;${END}q" < data.tex
또한, 값 뒤에 END
의 값이 아닌 문자가 오기를 원하므로 변수 이름이 끝나는 위치를 표시해야 합니다. 구문을 사용하여 변수 이름이 끝나는 위치를 명확하게 할 수 있습니다 .p
ENDp
${END}
$START 또는 $END가 숫자가 아니라 정규식인 경우 일부 문자를 이스케이프해야 할 수도 있습니다.