次の入力を検討してください。
$ cat input
some line 1
some line 2
\verbatiminput{code.R}
some line 3
\verbatiminput{code1.R}
$ cat code.R
#### Hello world ####
print ("hello world")
#####################
$ cat code1.R
#### Goodby world ####
print ("goodby world")
#####################
および次の bash スクリプト:
#!/bin/bash
regex='^\verbatiminput\{(.*)\}$'
while read line
do
if [[ $line =~ $regex ]]
then
file="${BASH_REMATCH[1]}"
echo \\begin{verbatim}
cat $file
echo \\end{verbatim}
else
echo $line
fi
done < input
これにより、次の出力が得られます。
some line 1
some line 2
\begin{verbatim}
#### Hello world ####
print ("hello world")
#####################
\end{verbatim}
some line 3
\begin{verbatim}
#### Goodby world ####
print ("goodby world")
#####################
\end{verbatim}
これは=~
、Bash の正規表現一致演算子である which を使用します。一致の結果は、 という配列に保存され$BASH_REMATCH
ます。最初のキャプチャ グループはインデックス 1 に格納され、2 番目 (存在する場合) はインデックス 2 に格納されます。インデックス 0 は完全一致です。