【问题标题】:How to check if a character follows a string in a text file?如何检查字符是否跟随文本文件中的字符串?
【发布时间】:2021-03-30 13:17:42
【问题描述】:

假设我们有这个 .txt 文件:

ABC;123
B;54
F;12
ABC;23
B;9

并且只想打印包含 ABC 标识符的行,即输出应该是:

ABC;123
ABC;23

但是当我使用这个代码时

awk -F ';' '("ABC" ~ $1)' sof.txt

我明白了

ABC;123
B;54
ABC;23
B;9

这显然是不对的。如何检查给定 ID 后面是否有分号,以便只打印所需的行?

【问题讨论】:

  • 使用awk -F ';' '$1 ~ "ABC"' fileawk -F ';' '$1 ~ /^ABC$/' fileawk -F ';' '$1 == "ABC"' file,见demo
  • 仅供参考,您进行了向后比较,测试$1 的内容是否匹配正则表达式"ABC" 写成$1 ~ "ABC",这仅在$1"ABC" 或包含字符串时才成立具有"ABC" 作为子字符串。通过编写"ABC" ~ $1,您正在测试字符串"ABC" 是否匹配$1 中包含的正则表达式,当$1 包含输入文件中除F 之外的任何第一个字段值时,它会执行此操作。

标签: shell awk delimiter


【解决方案1】:

如果您想在第一个字段中完全匹配 ABC,请尝试以下操作:

awk -F';' '$1=="ABC"' Input_file

如果您想检查它是否是任何值的一部分(在第一个字段中),请尝试:

awk -F';' '$1~/ABC/' Input_file

【讨论】:

    【解决方案2】:

    另一种可能性。

    使用 GNU awk,您还可以使用单词边界获得完整的字段:

    awk -F';' '$1 ~ /\<ABC\>/' file
    ABC;123
    ABC;23
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-11
      • 2011-09-30
      • 2023-01-08
      • 2013-12-15
      • 2019-02-27
      • 2012-02-19
      • 2013-05-03
      • 1970-01-01
      相关资源
      最近更新 更多