如何在BBEdit/InDesign中通过grep删除不含@字符的行?
保留含邮箱(@)的行,删除其他行的解决办法
我来帮你搞定这个需求!不管是用BBEdit/InDesign的Grep查找替换,还是终端命令行,都能轻松实现只保留带@的行,咱们分情况说:
一、BBEdit 或 InDesign 的 Grep 替换方法
这两个软件的Grep替换逻辑一致,核心是精准匹配整行不含@的内容,然后替换为空,步骤如下:
- 打开你的文本文件,调出查找替换对话框(BBEdit是
Cmd+F,InDesign是Cmd+F后切换到「Grep」标签) - 在「查找模式」里输入这个正则表达式:
给你拆解下这个正则的意思:^[^@]*$^:匹配一行的开头[^@]*:匹配0个或多个**不是@**的字符([^...]是反向匹配规则)$:匹配一行的结尾
组合起来就是精准命中整行都没有@符号的行,刚好对应你要删除的内容。
- 「替换模式」留空(什么都不填)
- 勾选对话框里的「Grep」选项,点击「全部替换」
替换完成后,文件里就只剩下带@的行啦!
小提示:BBEdit还有更快捷的方式——直接用「文本」菜单 →「筛选」→「保留包含以下内容的行」,输入
@回车就行,比Grep替换更省心~
二、终端命令行方法
如果你愿意用终端操作,那更简单,两种常用命令任你选:
方法1:用 grep
直接筛选出含@的行并保存到新文件:
grep "@" 你的文件名.txt > 筛选后文件.txt
方法2:用 sed
删除所有不含@的行,输出到新文件:
sed '/@/!d' 你的文件名.txt > 筛选后文件.txt
解释下:/@/匹配包含@的行,!d表示「不匹配的行就删除」,最终留下的就是你要的内容。
这两种方法都不需要验证邮箱的有效性,完全符合你的需求,选你顺手的来就行!
内容的提问来源于stack exchange,提问作者wide_eyed_pupil
相关产品推荐
相关产品推荐

