regex - 如何grep包含两个逗号的行
问题描述
我有一个 IP 文件,每行都有两个或三个逗号分隔的 IP,例如 -
ip x 171.48.179.64, 194.88.105.83, 10.121.15.191
ip x 122.176.17.76, 194.88.105.83, 10.121.15.191
ip x 223.179.196.169, 10.121.15.135
ip x 157.41.161.64, 10.121.15.135
ip x 49.14.160.119, 10.121.15.191
ip x 157.41.230.108, 10.121.15.191
ip x 101.208.189.88, 194.88.105.83, 10.121.15.191
ip x 180.215.137.150, 194.88.105.83, 10.121.15.191
ip x 157.41.161.64, 10.121.15.191
ip x 157.41.161.64, 10.121.15.191
所以我想 grep 包含两个逗号(三个 IP)的行,比如 -
ip x 171.48.179.64, 194.88.105.83, 10.121.15.191
ip x 122.176.17.76, 194.88.105.83, 10.121.15.191
ip x 101.208.189.88, 194.88.105.83, 10.121.15.191
ip x 180.215.137.150, 194.88.105.83, 10.121.15.191
我搜索了很多,但没有得到任何具体的答案,请帮助我。
解决方案
您可以使用awk
:
awk -F, 'NF==3' file
-F,
将分隔符设置为,
. NF
是一个包含字段数量的特殊变量。如果满足条件NF==3
,awk 将打印当前行。
使用 (e)grep 会是这样的:
grep -E '^([^,]+,){2}[^,]+$' file
我个人会使用 awk,因为它更具可读性。
推荐阅读
- ruby - 如何删除散列中的数组
- text - RAML MimeType 用于文本/纯文本
- c++ - C++11:默认的默认构造函数会导致部分初始化的类吗?
- android - 膨胀类 android.support.constraint.ConstraintLayout 时出错
- bash - 你能帮我在 Slurm 中并行运行任务吗?
- python - 如何在tensorflow中的隐藏层之前添加一个dropout层?
- python - google 知识图 api 支持哪些 schema.org 类型?
- ios - iOS 应用程序只有在打开后才会崩溃。新建
- r - 如何显式构建稀疏 stringdistmatrix 以避免内存不足?
- python - 有没有将 Highcharts 系列数据转换为 Python 字典数据的简单方法?