gpt4 book ai didi

awk - 在 awk 中删除带有特殊字符的行

转载 作者:行者123 更新时间:2023-12-04 12:30:33 25 4
gpt4 key购买 nike

我有一个这样的文本文件:

VAREAKAVVLRDRKSTRLN 2888
ACP*VRWPIYTACGP 292
RDRKSTRLNSSHVVTSRMP 114
VAREA*KAVVLRDRRAHV*T 73

在某些行的第一列中有一个“*”。我想删除带有“*”的所有行。这是预期的输出:

预期输出:

VAREAKAVVLRDRKSTRLN 2888
RDRKSTRLNSSHVVTSRMP 114

为此,我使用了这段代码:

awk -F "\t" '{ if(($1 == '*')) { print $1 "," $2} }' infile.txt > outfile.txt

这段代码没有返回预期的输出。我该如何解决?

最佳答案

我该如何解决?

你做到了

awk -F "\t" '{ if(($1 == '*')) { print $1 "," $2} }' infile.txt > outfile.txt

通过执行 $1 == "*" 你是在问:是第一个字段 * not does first contain *?您可以使用 index如果找到则返回匹配位置的函数,否则返回 0。让infile.txt内容为

VAREAKAVVLRDRKSTRLN 2888
ACP*VRWPIYTACGP 292
RDRKSTRLNSSHVVTSRMP 114
VAREA*KAVVLRDRRAHV*T 73

然后

awk 'index($1,"*")==0{print $1,$2}' infile.txt

输出

VAREAKAVVLRDRKSTRLN 2888
RDRKSTRLNSSHVVTSRMP 114

请注意,如果您使用 index 而不是模式 /.../ 则不必关心具有特殊含义的字符,例如.。请注意,对于您拥有的数据,您不必明确设置字段分隔符 (FS)。 重要 ' 在 GNU AWK 中不是合法的字符串分隔符,您应该为此目的使用 ",除非您有意就是召唤难找的 bug 。

(在 gawk 4.2.1 中测试)

关于awk - 在 awk 中删除带有特殊字符的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69387272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com