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