我有一份很长的 Latex 文档,其中包含许多部分。我想检查文档的所有部分是否都已填写。因此,我搜索以 '}' 结尾的部分标题、一些空格,然后以 '\' 开始下一节的任何内容(这远非完美的搜索,但对我来说没问题。)
在 vim 中我使用
/}\_s\\
效果很好。但是,我在命令行上复制搜索时遇到了困难。
我通常会使用 grep,但这是一个多行匹配,所以不行。我对 sed 没什么经验,但我试过这个:
sed -e '/\}\s\\/p' file.tex
它给了我一切(大概是因为它打印了匹配的多行 - 整个文件)
我怎样才能改进这个 sed 命令以便只显示匹配的第一行?
答案1
sed
,像 一样grep
,逐行处理文件。此外,它会打印所有内容,除非您指定-n
选项(或使用d
命令)。
你可以尝试 Perl:
perl -0777 -ne 'print $1 while /(\}\s*\\)/g' file.tex
-0777
读取整个文件而不是逐行读取