【发布时间】:2021-06-18 08:50:57
【问题描述】:
我想编写一个 bash 脚本,它只打印第二列中包含逗号分隔字符串中的单词的行。示例:
words="abc;def;ghi;jkl"
>cat log1.txt
hello;abc;1234
house;ab;987
mouse;abcdef;654
我想要的是只打印包含“words”变量中的整个单词的行。这意味着“ab”不会匹配,“abcdef”也不会匹配。看起来很简单,但尝试了很多小时后,我无法找到解决方案。
例如,我尝试将此作为我的 awk 命令,但它匹配任何子字符串。
-F \; -v b="TSLA;NVDA" 'b ~ $2 { print $0 }'
我将不胜感激。谢谢。
编辑:
示例输入如下所示
1;UNH;buy;344.74
2;PG;sell;138.60
3;MSFT;sell;237.64
4;TSLA;sell;707.03
这样的变量会被设置
filter="PG;TSLA"
根据这个过滤器,我想回应这些行
2;PG;sell;138.60
4;TSLA;sell;707.03
【问题讨论】:
-
"abc;def;ghi;jkl"是分号分隔的字符串,不是逗号分隔的。
标签: bash awk scripting matching