为了建立索引,我正在一堆latex
文件中搜索一些单词。这个过程由于latex
有一个任意的连字符命令而变得复杂\-
,该命令指示latex
它可以在哪些位置断词。我想将其纳入我的搜索中,但到目前为止我还没有成功。例如,我需要一个匹配所有的表达式
pādapracāra
pāda\-pracāra
pā\-da\-pra\-cā\-ra
或同一单词的不同连字符实例。
我知道为了匹配乳胶命令开头的反斜杠,必须输入四个反斜杠,例如$ grep \\\\mycommand
*tex`。
在vim
我可以通过 搜索这样的表达式/pā\(\\-\)*da\(\\-\)*pra\(\\-\)*cāra
,所以我认为在 grep 中它会是类似的东西grep pā\(\\\\-\)\?da *tex
(依此类推,但这个已经不匹配任何东西)。
答案1
我不认为你可以指示“grep”忽略连字符。
首先通过“sed”过滤它怎么样:
echo 'pa\\-da\\-pra\\-ca\\-bra' | sed -e s'/\\-//g'
并且您可以使用另一个表达式进行模式匹配(如用户所建议的那样CAS):
echo 'pa\\-da\\-pra\\-ca\\-bra' | sed -n -e s'/\\-//g' -e '/pada/p'
答案2
$ grep -Ei 'pā(\\-)?da(\\-)?pra(\\-)?cā(\\-)?ra' *tex
做我需要的。
答案3
通过 bash 编辑 LaTeX' 文档不是正确的方法,但如果您愿意,这里是
grep -Ee "$(echo "padapracara" | sed "s/\B/(\\\\\\\\-)?/g")"