根据部分字段中的部分子字符串匹配来打印多个字段

百万

根据此数据:

"STRING1","c45621396a774a7a79b095a1b73b1d3b","2016-04-14T19:39:41.529978","1.0.4.4","7-sp1.0-amd64","","10.224.241.219|0.0.0.0|0.0.0.0|192.168.0.6|0.0.0.0"
"STRING2","c5815139f3051de2ab67909b03a01203","2016-04-14T19:37:47.991569","1.0.4.4","7-sp1.0-amd64","","10.230.16.188"
"STRING3","c837513923e2abfe4df41c2240d1c869","2016-04-14T19:40:10.385759","1.0.4.4","7-sp1.0-amd64","","0.0.0.0|0.0.0.0|0.0.0.0|10.226.41.43"
"STRING4","c837544923e2abfe4df41c2240d1c869","2016-04-14T19:40:10.385779","1.0.4.4","7-sp0.0-amd64","","8.8.8.8|0.0.0.0|0.0.0.0|0.0.0.0|10.226.41.43"
"STRING5","c837544003e2abfe4df41c2240d1c869","2016-04-14T19:40:10.382379","1.0.4.4","7-sp0.0-amd64","","0.0.0.0|10.20.40.6|0.0.0.0|10.226.41.43"

我只想保留

  • 第一个字段(这是一个具有不可预测的字母数字/长度的字符串),并且
  • 从第六个字段开始,只有以10开头的IP地址(可以有一个或多个)。

根据以下示例,这是所需的输出:

STRING1 10.224.241.219
STRING2 10.230.16.188
STRING3 10.226.41.43
STRING4 10.226.41.43
STRING5 10.20.40.6 10.226.41.43

可以达到此目的的sed / awk魔术是什么?我可以在GNU / Linux系统或cygwin上使用任何标准的文本处理工具来实现此目的。

谢谢

芒登

如果您的字段从不包含逗号,则可以尝试:

$ perl -F, -lane '@k=split(/["|]/,$F[6]); 
                  @l=grep{/^10\./}@k; 
                  print "$F[0] @l"' file | 
    sed 's/"//g'
STRING1 10.224.241.219
STRING2 10.230.16.188
STRING3 10.226.41.43
STRING4 10.226.41.43
STRING5 10.20.40.6 10.226.41.43

解释

Perl的-a选项使它像这样工作awk,它将输入的文件拆分为给定的值-F,并将每个结果字段另存为数组中的元素@F因此,第一个字段将是$F[0],第二个字段$F[1]等。该-l选项向每个print调用添加换行符,-n告诉告诉perl一行一行地读取其输入文件,并将由-e定的脚本应用于每一行。

  • @k=split(/["|]/,$F[6]);:分割"上的第7个字段|,并将其另存为数组@k这将是IP。
  • @l=grep{/^10\./}@k;@k将以a开头的所有字段保存10在数组中@l
  • print "$F[0] @l":打印第一个字段以及其中的任何内容@l
  • sed 's/"//g':删除引号。由于perl将在运行其他任何操作之前先分割输入行,因此使用其他程序更容易。

您还可以通过不使用临时数组变量来缩短Perl脚本:

perl -F, -lane 'print "$F[0] ", join " ", grep{/^10\..*/} split(/["|]/,$F[6])' file

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据部分匹配替换整个字符串

来自分类Dev

基于多个字符串的部分匹配,在R数据帧中对行进行子集

来自分类Dev

按字段中的一部分字符串而不是mongodb中的整个字段进行分组

来自分类Dev

根据列表中的部分匹配字符串过滤DataFrame

来自分类Dev

替换与arrayList中的键匹配的字符串的多个部分

来自分类Dev

检查数据框中的多个字段(字符串字段和日期字段)

来自分类Dev

计算字符串与多个文档中的字段匹配的次数

来自分类Dev

Mongoose:使用 $or 进行跨多个字段的部分匹配

来自分类Dev

python difflib打印只匹配两个字符串之间的部分

来自分类Dev

根据数组中的部分字符串检查/匹配字符串

来自分类Dev

AWK简洁的方法来检查2个字段是否匹配相同的字符串

来自分类Dev

awk 多个字段中的多个字符串

来自分类Dev

反应 根据多个字符串数组将部分文本换行

来自分类Dev

如何在字段中查找字符串的一部分,如果存在,请用另一个字段替换它?

来自分类Dev

根据多个单词将字符串拆分为两个字段

来自分类Dev

SQL选择表字段部分与表单文本框字符串匹配的行

来自分类Dev

根据字符串的部分匹配联接MySQL表

来自分类Dev

使用MSSQL中的多个搜索字符串过滤多个字段

来自分类Dev

使用日期字段的月份部分返回字符串

来自分类Dev

SSIS:字符串的特定部分的修剪字段

来自分类Dev

部分字符串作为字段值返回 mysql

来自分类Dev

修改多个字符串字段

来自分类Dev

MYSQL字符串以检查多个字段

来自分类Dev

在mongo聚合中匹配两个字符串对象字段

来自分类Dev

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

来自分类Dev

在kibana3中的字段中查询多个字符串?

来自分类Dev

在Elasticsearch中,如何从多层嵌套对象的多个字段中搜索字符串

来自分类Dev

根据R中字符串变量的部分匹配进行过滤

来自分类Dev

如何删除表中特定字段上的字符串的特定部分?

Related 相关文章

  1. 1

    根据部分匹配替换整个字符串

  2. 2

    基于多个字符串的部分匹配,在R数据帧中对行进行子集

  3. 3

    按字段中的一部分字符串而不是mongodb中的整个字段进行分组

  4. 4

    根据列表中的部分匹配字符串过滤DataFrame

  5. 5

    替换与arrayList中的键匹配的字符串的多个部分

  6. 6

    检查数据框中的多个字段(字符串字段和日期字段)

  7. 7

    计算字符串与多个文档中的字段匹配的次数

  8. 8

    Mongoose:使用 $or 进行跨多个字段的部分匹配

  9. 9

    python difflib打印只匹配两个字符串之间的部分

  10. 10

    根据数组中的部分字符串检查/匹配字符串

  11. 11

    AWK简洁的方法来检查2个字段是否匹配相同的字符串

  12. 12

    awk 多个字段中的多个字符串

  13. 13

    反应 根据多个字符串数组将部分文本换行

  14. 14

    如何在字段中查找字符串的一部分,如果存在,请用另一个字段替换它?

  15. 15

    根据多个单词将字符串拆分为两个字段

  16. 16

    SQL选择表字段部分与表单文本框字符串匹配的行

  17. 17

    根据字符串的部分匹配联接MySQL表

  18. 18

    使用MSSQL中的多个搜索字符串过滤多个字段

  19. 19

    使用日期字段的月份部分返回字符串

  20. 20

    SSIS:字符串的特定部分的修剪字段

  21. 21

    部分字符串作为字段值返回 mysql

  22. 22

    修改多个字符串字段

  23. 23

    MYSQL字符串以检查多个字段

  24. 24

    在mongo聚合中匹配两个字符串对象字段

  25. 25

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

  26. 26

    在kibana3中的字段中查询多个字符串?

  27. 27

    在Elasticsearch中,如何从多层嵌套对象的多个字段中搜索字符串

  28. 28

    根据R中字符串变量的部分匹配进行过滤

  29. 29

    如何删除表中特定字段上的字符串的特定部分?

热门标签

归档