regex - 从egrep打印输出中排除以空格开头的行

标签 regex unix grep

我正在尝试编写一个正则表达式 (e)grep 命令,该命令将打印 txt 文件中的所有行,但忽略以空格开头的行(手动缩进文件)。我无法弄清楚如何一起使用行开头 ^ 和排除 ^ 。谢谢!

最佳答案

实现此目的的一个好方法是使用 negated character class

就像[abc]将匹配abc[^ abc] 将匹配除 abc 之外的任何字符。 ^ 将正则表达式锚定在行的开头,因此它后面的内容必须匹配字符串的第一个字符。

$ cat test
does not start with space
 starts with space
       starts with more spaces
another good line

$ egrep '^[^ ]' test
does not start with space
another good line

如果我们想跳过以空格开头的行,包括制表符,可以在字符类中使用特殊的 [:space:] 括号表达式:

 egrep '^[^[:space:]]' test

如果您不想在行中查找其他内容,您还可以使用反向匹配:

 -v, --invert-match
         Selected lines are those not matching any of the specified pat-
         terns.

所以我们可以这样做:

 egrep -v '^[[:space:]]' test

grep 也应该这样做:

 grep -v '^[[:space:]]' test

关于regex - 从egrep打印输出中排除以空格开头的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35384642/

相关文章:

php - 从路径中提取文件名

linux - 使用 BASH 和 grep 将 whois 结果格式化为 CSV

linux - 如何查找包含特定文本(包括反斜杠)的所有文件?

python - 使用组标签 ?P<> 正则表达式到字典

python - re.search 无法在文件中找到正则表达式模式

bash - 有什么方法可以向 unix 中的程序提供标准输入/输出而不是文件?

apache - 审查委员会差异未上传

linux - sed命令只替换一个文件中的值一次

Unix 'find' + 'grep' 语法与 awk

html - 需要帮助创建正则表达式或脚本以在 html 文件上运行