无法使用awk匹配字符串中的正则表达式

时间:2012-10-23 11:56:26

标签: awk

我正在尝试从行的第一部分获取行的第二部分包含模式的行。

$ cat file.txt
String1 is a big string|big
$ awk -F'|' ' { if ($2 ~ /$1/) { print $0 } } ' file.txt 

但它不起作用。

我无法找出这里的错误。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

两件事:没有斜线,你的数字是向后的。

awk -F\| '$1~$2' file.txt

答案 1 :(得分:0)

我猜你的意思是第一部分字符串的一部分应该是第二部分的一部分。如果这是你想要的!然后,

awk -F'|' '{n=split($1,a,' ');for(i=1,i<=n;i++){if($2~/a[i]/)print $0}}' your_file

答案 2 :(得分:0)

令人惊讶的是,您的命令行有很多问题:

1) You aren't using the awk condition/action syntax but instead needlessly embedding a condition within an action,
2) You aren't using the default awk action but instead needlessly hand-coding a print $0.
3) You have your RE operands reversed.
4) You are using RE comparison but it looks like you really want to match strings.

您可以通过将命令修改为:

来修复上述前三项
awk -F'|' '$1~$2' file.txt

但我认为你真正想要的是“4”,这意味着你需要这样做:

awk -F'|' 'index($1,$2)' file.txt