【问题标题】:Regex Match First Character of Column正则表达式匹配列的第一个字符
【发布时间】:2017-10-04 18:31:38
【问题描述】:

我目前有一个名为computers.txt的文件

ST 314、Fox、PC、Unix
ST 13,纽曼,麦克
ST 212,弗兰克,Linux,PC
BP 311,琼斯,PC
ST 404,Walden,PC,Linux
ST 303,诺布利特,PC
ST 102,克里斯滕森,麦克
ST 301,沃德,PC
SB 444,史密斯,麦克
ST 202、柯比、Mac、PC
ST 361,实验室,Linux
ST 333,胡,Unix,PC

如果成员名称以字母 F、G、H、I、J 或 K 开头,我需要使用正则表达式显示该行。有帮助吗?

【问题讨论】:

  • Regex 可能是这个工作的错误工具。为什么不在逗号上awk split,然后只抓住第二个标记的第一个字符?

标签: regex linux awk grep


【解决方案1】:

使用 grep

grep '^[^,]*, *[FGHIJK]' file

输出:

ST 314, Fox, PC, Unix
ST 212, Frank, Linux, PC
BP 311, Jones, PC
ST 202, Kirby, Mac, PC
ST 333, Hu, Unix, PC

【讨论】:

    【解决方案2】:
    awk -F', *' '$2 ~ /^[FGHIJK]/' file
    

    【讨论】:

      【解决方案3】:
      cat jake
      ST 314, Fox, PC, Unix
      ST 13, Newman, Mac
      ST 212, Frank, Linux, PC
      BP 311, Jones, PC
      ST 404, Walden, PC, Linux
      ST 303, Noblitt, PC
      ST 102, Christensen, Mac
      ST 301, Ward, PC
      SB 444, Smith, Mac
      ST 202, Kirby, Mac, PC
      ST 361, Lab, Linux
      ST 333, Hu, Unix, PC
      

      然后

      awk -F, '$2~/^[FGHIJK]/' jake
      ST 314, Fox, PC, Unix
      ST 212, Frank, Linux, PC
      BP 311, Jones, PC
      ST 202, Kirby, Mac, PC
      ST 333, Hu, Unix, PC
      

      【讨论】:

      • 这将匹配该字段中的任何位置,而不仅仅是在开始时。考虑像@​​987654324@ 这样的名称。修复后,您将拥有the same answer as I posted
      • 确实如此。谢谢埃德
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2017-02-09
      • 2012-09-17
      • 2018-12-17
      • 2014-08-12
      • 2016-02-27
      相关资源
      最近更新 更多