我有这样的字符串:
volume 5
vol. 5
V. 5
v. 5
我正试图将它们变成这种格式:
\textbf{5}
使用此sed命令
s/\(v[a-Z]*[.]*\) \([0-9]*\)/\1 \\textbf{\2}/
但我一直在invalid range end
。我在0-9范围内做错了吗?
答案 0 :(得分:3)
如果您检查ASCII表,您会发现a
值高于Z
的值。这会创建无效范围。此外,您需要一个不区分大小写的模式,添加/i
修饰符:
echo 'volume 5' | sed 's/\(v[a-z]*[.]*\) \([0-9]*\)/\1 \\textbf{\2}/i'
echo 'vol. 5' | sed 's/\(v[a-z]*[.]*\) \([0-9]*\)/\1 \\textbf{\2}/i'
echo 'V. 5' | sed 's/\(v[a-z]*[.]*\) \([0-9]*\)/\1 \\textbf{\2}/i'
echo 'v. 5' | sed 's/\(v[a-z]*[.]*\) \([0-9]*\)/\1 \\textbf{\2}/i'
volume \textbf{5}
vol. \textbf{5}
V. \textbf{5}
v. \textbf{5}
答案 1 :(得分:1)
这对我有用:
sed -r "s/([vV][a-zA-Z]*[.]*) ([0-9]*)/\1 \\\textbf{\2}/"