算術的なものを表現する方法には、新しいものや古いものなど、さまざまな方法があります。しかし、私はこの記事を効率的でよく使いたいです。
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が数字ではなく正規表現の場合は、一部の文字をエスケープする必要があります。