Grep具有完全匹配和随机字符串之间匹配的IP

禅机芯

我正在尝试显示以下包含IP地址的输入文件。我想显示如示例所示的字符串之间的精确匹配,但似乎没有成功。为了演示,这里是文本文件内的示例数据input.txt

1. IP [1.1.1.1] 
2. IP [1.1.1.11] 
3. IP [1.1.1.115]
4. IP "1.1.1.1 " 
5. IP "1.1.1.11 "
6. IP "1.1.1.115"
7. IP U*@K1.1.1.1-I(M@ 
8. IP *JJ1.1.1.11()
9. IP *[email protected]*@ 
10. IP U#@I1.1.1.19lds

因此,假设我要查找此IP:,1.1.1.1我将编写以下代码:

grep -w '1.1.1.1' input.txt

有了这个我得到以下输出:

1. IP [1.1.1.1]
4. IP "1.1.1.1 "

但是预期的输出是,第7行也应显示,因为它包含1.1.1.1随机字符串之间的IP 因此,预期输出应如下所示:

1. IP [1.1.1.1]
4. IP "1.1.1.1 "
7. IP U*@K1.1.1.1-I(M@

现在让我说我想找到这个字符串1.1.1

grep -w '1.1.1' input.txt

我得到以下输出:

1. IP [1.1.1.1]
2. IP [1.1.1.11]
3. IP [1.1.1.115]
4. IP "1.1.1.1 "
5. IP "1.1.1.11 "
6. IP "1.1.1.115"
7. IP U*@K1.1.1.1-I(M@

预期的输出是,它不应该返回任何东西,因为整个字符串1.1.1不在里面input.txt

grep有能力做到这一点吗?

保罗·霍奇斯

简化并更加明确。

$: grep '[^.0-9]1.1.1.1[^.0-9]' txt
1. IP [1.1.1.1]
4. IP "1.1.1.1 "
7. IP U*@K1.1.1.1-I(M@

但是,这仍然存在缺陷-在测试数据中添加另一条记录。

$: grep '[^.0-9]1.1.1.1[^.0-9]' txt
1. IP [1.1.1.1]
4. IP "1.1.1.1 "
7. IP U*@K1.1.1.1-I(M@
11. IP [1a1b1c1]

然后试试这个:

$: grep '[^.0-9]1\.1\.1\.1[^.0-9]' txt
1. IP [1.1.1.1]
4. IP "1.1.1.1 "
7. IP U*@K1.1.1.1-I(M@

这仍然无法说明在线路的最末端使用IP的可能性,因此,如果完全有这种可能性,

$: grep -E '(^|[^.0-9])1\.1\.1\.1([^.0-9]|$)' txt
1. IP [1.1.1.1]
4. IP "1.1.1.1 "
7. IP U*@K1.1.1.1-I(M@
12. IP 1.1.1.1

如果IP作为变量出现,则可以在其位置引用它。

$: ip=1.1.1.1
$: echo "grep -E '(^|[^.0-9])${ip//./\\.}([^.0-9]|$)'"
grep -E '(^|[^.0-9])1\.1\.1\.1([^.0-9]|$)'
$: grep -E "(^|[^.0-9])${ip//./\\.}([^.0-9]|$)" txt
1. IP [1.1.1.1]
4. IP "1.1.1.1 "
7. IP U*@K1.1.1.1-I(M@
12. IP 1.1.1.1

如果您的模式变得复杂,则可能会出现问题,但是在这里可以正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

regex和grep在if循环中仅匹配具有有效端口的字符串

来自分类Dev

grep和/或sed匹配具有不同模式的字符串中的路径

来自分类Dev

grep完全匹配字符串的两个部分

来自分类Dev

如何在熊猫中获取具有部分和完全字符串匹配组合的行?

来自分类Dev

Grep与多个字符串完全匹配,没有破折号

来自分类Dev

如果字符在引号之间,则不匹配(AKA具有编程字符串模式)

来自分类Dev

部分匹配字符串和多个向量的完全替换

来自分类Dev

用grep和\ A regexp匹配字符串

来自分类Dev

grep的行和字符串位置匹配

来自分类Dev

使用$和grep的奇怪的字符串匹配问题

来自分类Dev

过滤字符_和/之间有两个字符串匹配的对齐方式

来自分类Dev

组之间存在随机字符串时匹配可选字符串

来自分类Dev

组之间存在随机字符串时,匹配可选字符串

来自分类Dev

如何匹配具有()或(任何字符)java的字符串

来自分类Dev

如何匹配具有()或(任何字符)java的字符串

来自分类Dev

Python regex匹配abcd =“ _ blank”>和</a>之间的字符串

来自分类Dev

如何在字符串和空格之间匹配文本

来自分类Dev

python中i和j之间的字符串匹配?

来自分类Dev

收集模式 1 和模式 2 之间的所有字符串,但只打印与模式 3 匹配的字符串

来自分类Dev

匹配字符串regex完全匹配-特殊字符

来自分类Dev

如何匹配字符串和下一个空格之间的所有内容

来自分类Dev

如何匹配字符串和下一个空格之间的所有内容

来自分类Dev

Python将字符串完全匹配

来自分类Dev

Ruby完全匹配字符串

来自分类Dev

NSPredicate与字符串完全匹配

来自分类Dev

匹配字符串之间的所有(+)符号

来自分类Dev

匹配定界字符之间的字符串

来自分类Dev

如果字符串列表具有特定的字符串c#尝试匹配,则匹配。

来自分类Dev

如何使用sed匹配和切割具有不同条件的字符串?

Related 相关文章

  1. 1

    regex和grep在if循环中仅匹配具有有效端口的字符串

  2. 2

    grep和/或sed匹配具有不同模式的字符串中的路径

  3. 3

    grep完全匹配字符串的两个部分

  4. 4

    如何在熊猫中获取具有部分和完全字符串匹配组合的行?

  5. 5

    Grep与多个字符串完全匹配,没有破折号

  6. 6

    如果字符在引号之间,则不匹配(AKA具有编程字符串模式)

  7. 7

    部分匹配字符串和多个向量的完全替换

  8. 8

    用grep和\ A regexp匹配字符串

  9. 9

    grep的行和字符串位置匹配

  10. 10

    使用$和grep的奇怪的字符串匹配问题

  11. 11

    过滤字符_和/之间有两个字符串匹配的对齐方式

  12. 12

    组之间存在随机字符串时匹配可选字符串

  13. 13

    组之间存在随机字符串时,匹配可选字符串

  14. 14

    如何匹配具有()或(任何字符)java的字符串

  15. 15

    如何匹配具有()或(任何字符)java的字符串

  16. 16

    Python regex匹配abcd =“ _ blank”>和</a>之间的字符串

  17. 17

    如何在字符串和空格之间匹配文本

  18. 18

    python中i和j之间的字符串匹配?

  19. 19

    收集模式 1 和模式 2 之间的所有字符串,但只打印与模式 3 匹配的字符串

  20. 20

    匹配字符串regex完全匹配-特殊字符

  21. 21

    如何匹配字符串和下一个空格之间的所有内容

  22. 22

    如何匹配字符串和下一个空格之间的所有内容

  23. 23

    Python将字符串完全匹配

  24. 24

    Ruby完全匹配字符串

  25. 25

    NSPredicate与字符串完全匹配

  26. 26

    匹配字符串之间的所有(+)符号

  27. 27

    匹配定界字符之间的字符串

  28. 28

    如果字符串列表具有特定的字符串c#尝试匹配,则匹配。

  29. 29

    如何使用sed匹配和切割具有不同条件的字符串?

热门标签

归档