Joe*_*moe 11 linux grep html whitespace text
我有一个包含一些 HTML 和一些文本的文件,我只想使用文本行。
我在玩弄grep,试图找到一种方法来排除以 HTML 标记开头的行,甚至是在标记前包含空格的行。
不知何故这对我有用,但我认为它不应该:
grep '^\<' file.htm
它只是向我显示没有 html 的行。你能解释一下为什么吗?我想我需要grep -v一些.*地方来完成这项工作。
Kam*_*ski 15
\<
匹配单词开头的空字符串。
\>
匹配单词末尾的空字符串。
这也是相关的[强调我的]:
-w
--word-regexp
仅选择包含构成整个单词的匹配项的那些行。测试是匹配的子字符串必须位于行首或前面是非单词组成字符。同样,它必须位于行尾或后跟非单词组成字符。单词组成字符是字母、数字和下划线。[…]因为该
-w选项可以匹配不以单词成分开头和结尾的子字符串,所以它不同于用\<和包围正则表达式\>。例如,尽管grep -w @只匹配包含线@,grep '\<@\>'不能因为匹配任何线@是不是一个字组成。[…]
为了完整性:
插入符号
^和美元符号$是元字符,分别匹配行首和行尾的空字符串。它们被称为锚点,因为它们分别强制匹配“锚定”到一行的开头或结尾。
您使用的模式 ( ^\<) 匹配单词组成字符之前的行首。<字符和空格都不是单词成分。
请注意,行首的空格不会触发匹配,无论后面是否有标签或其他内容。一些对文本行有效的字符也不会触发匹配(例如()。