我想检查第1列中的数字是否等于第2列,第1列应该以ABC开头并以DEF结尾,它们之间的数字应与第2列匹配。
请帮助我。我的意见
ABC 12345 DEF | 12345 | 23132331331 |
ABC 95678 DEF | 45678 | 23132331331 |
ABC 87887 DEF | 86187 | 23132331331 |
ABC 89043 DEF | 89043 | 23132331331 |
输出应为:
ABC 12345 DEF | 12345 | 23132331331 |
ABC 89043 DEF | 89043 | 23132331331 |
我试图使用那些愚蠢的,但它没有用。 awk -F' |' '($ 1!〜/ ABC + [$ 2] + DEF /)' WHTFile.txt> QC2Valid.txt
答案 0 :(得分:1)
这应该适合您的要求:
awk -F'|' '{s=$2;sub(/\s/,"",s)}$1 ~ s' input
ABC12345DEF |12345 |23132331331|
ABC89043DEF |89043 |23132331331|
您的代码中的问题:
+
/.../
之间的awk中连接字符串,它是静态正则表达式~
代替!~
。答案 1 :(得分:0)
在|12345 |
列中,是尾随空格数据吗?我假设没有,基于你提出的输出。在这种情况下,分隔符不仅仅是管道符。
要查看$ 2是否嵌入$ 1中的常量中,这将起到作用:
$ awk -F '[ |]' '"ABC" $2 "DEF" = $1 { print }'