我正在尝试从行的第一部分获取行的第二部分包含模式的行。
$ cat file.txt
String1 is a big string|big
$ awk -F'|' ' { if ($2 ~ /$1/) { print $0 } } ' file.txt
但它不起作用。
我无法找出这里的错误。
有人可以帮忙吗?
答案 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