linux - 如何使用 awk 在文件中搜索包含美元符号 ($) 的单词
问题描述
我想捕捉包含以下模式的行:word1、word2、^word3$、word4
我想检查该行中的第三个单词是否等于 word3,^ 和 $ 符号总是使用 awk 在第三列中。像这样的东西:
less file.txt | awk '{if ($3=="^word3$") {print $0}}'
这将打印该行,我只是不能用 ^ 和 $ 符号抓住这个词。
我该怎么做?(我必须使用awk,因为原始命令更复杂,我不能使用grep)
谢谢!
解决方案
已编辑:输入的单词由空格和逗号分隔。所以awk
命令需要这个-F ", "
选项。
如果使用 operator ==
,awk
将执行完全匹配。如果要使用正则表达式,则必须使用~
运算符。所以你有两个解决方案:
完全符合:
awk -F ", " '($3 == "word3") {print}' file.txt
正则表达式:
awk -F ", " '($3 ~ "^word3$") {print}' file.txt
由于{print}
是默认执行的指令,您甚至可以删除该部分并仅发出:
awk -F ", " '($3 ~ "^word3$")' file.txt
但是,如果我一遍又一遍地阅读您的问题,我开始认为您想^word3$
从文本中提取内容。在这种情况下,您需要的是:
awk -F ", " '($3 == "^word3$")' file.txt
(在这种情况下没有方括号,正如某处所建议的那样)。
不重新定义字段分隔符的等效解决方案是将逗号放在您尝试匹配的字符串内:
awk '($3 == "^word3$,")' file.txt
推荐阅读
- python - 无法在带有 PyCharm 的 Anaconda 环境中使用 windpowerlib?
- c# - 我做了一个滑块,可以在主菜单中调整游戏音量,但是当场景更改为实际游戏时音乐恢复正常?
- scala - 为什么除了错误之外我看不到我的演员级别的日志消息
- android - 我的应用未显示清单文件中的名称
- html - 如何从 p 或 div 中抓取文本,输出给出一个空列表或无
- angular - Angular 应用程序中页脚后的额外空白
- amazon-web-services - 如何连接 AWS 账户
- native-base - 本机基础标签 - 知道如何删除标签周围的边框吗?
- react-native - Reactnative TypeError 中未显示特定页面的 Json 数据:
- r - R 中的 plotly 包如何从没有人脸信息的顶点信息创建实体 3D 网格