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

无法使用awk匹配字符串中的正则表达式,awk,Awk,我试图从行的第一部分获取第二部分包含模式的行 $ cat file.txt String1 is a big string|big $ awk -F'|' ' { if ($2 ~ /$1/) { print $0 } } ' file.txt 但它不起作用 我无法找出这里的错误 有人能帮忙吗?有两件事:没有斜杠,而且你的数字是倒过来的 awk -F\| '$1~$2' file.txt 我猜你的意思是第一部分的字符串的一部分应该是第二部分的一部分。如果这是你想要的!那么 awk -F'|

我试图从行的第一部分获取第二部分包含模式的行

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

我无法找出这里的错误


有人能帮忙吗?

有两件事:没有斜杠,而且你的数字是倒过来的

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

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

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

awk-F'|'{n=split($1,a');for(i=1,i您的命令行有很多错误:

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

你的意思似乎是“第一部分包含第二部分”,不是吗?