regex - 基于变量的 AWK 部分字符串匹配(如果列/单词部分匹配)
问题描述
这个问题来自这个 other。
我的Linux shell脚本的案例场景:
$ cat test.txt
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
搜索包含“雪”的第三个字段的行可以正常工作:
$ awk '$3 ~/snow/' test.txt
1 a snow
2 b snowman
但我需要通过使用变量来做到这一点:
$ word="snow"
$ echo $word
snow
$ awk -v variable="snow" '$3 ~/variable/' test.txt
$ awk -v variable="$word" '$3 ~/variable/' test.txt
$
可以看出,没有结果。
我如何执行基于变量的 AWK 搜索?
解决方案
您应该更改$3 ~/variable/
TO $3 ~ variable
,因为 a/../
包含正则表达式而不是变量。因此,在您的情况下,它将尝试搜索“字符串”命名变量而不是“变量”命名变量。
推荐阅读
- antd - Antd - 滚动页面时表格标题固定在顶部
- ios - Cloud Firestore 无法检索文档或字段
- javascript - 如何在 JavaScript 中从 LINE api 获取用户数据?
- sql-server - 存储过程很好,但后来变得非常慢
- javascript - Websockets in Sapper
- amazon-web-services - ECS 相当于 docker-compose 的命令
- laravel - Eloquent 自定义关系 hasMany(外域包含由外键连接的文本)
- node.js - Sequelize @6.3.4 无法连接到 docker -> postgres
- c++ - BIO 不刷新 OpenSSL 中的数据
- sql - SQL查询求和列直到满足行条件并继续求和列