test文件的内容如下:
天坛公园 北京市天坛公园
陶然亭公园 北京市陶然亭公园东门
天坛公园 北京市(天坛公园)
现在想过滤出 第二个字段以第一个字段结尾的行
awk '{re=$1"$";if($2~re){print $0}}' test
输出:
天坛公园 北京市天坛公园
如果写成:
awk '{re=$1;if($2~/'"$a"'$/){print $0}}' test
则输出很神奇的变成:
天坛公园 北京市天坛公园
陶然亭公园 北京市陶然亭公园东门
天坛公园 北京市(天坛公园)
不知道为什么不会考虑$这个结尾符号,无论把$放在正则表达式的哪个位置都不行。
现在想过滤出 第二个字段包含“(第一个字段)”的行
awk '{re=“\\(”$1"\\)";if($2~re){print $0}}' test
输出:
天坛公园 北京市(天坛公园)
建议正则表达式中涉及到变量的,都把正则表达式存在一个字符串中,再进行使用。