0

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

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

但它不起作用。

我无法找出这里的错误。

有人可以帮忙吗?

4

3 回答 3

2

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

awk -F\| '$1~$2' file.txt
于 2012-10-23T12:03:48.977 回答
0

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

awk -F'|' '{n=split($1,a,' ');for(i=1,i<=n;i++){if($2~/a[i]/)print $0}}' your_file
于 2012-10-23T12:24:32.830 回答
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
于 2012-10-23T17:08:56.827 回答