linux - 如何使用 grep 匹配作为变量(而不是整行)
问题描述
这是示例文件
[user@linux]$ cat DeviceA
DeviceA#sh ver
Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 15.1(4)M10, RELEASE SOFTWARE (fc2)
[user@linux]$
Version 15.1(4)M10
将被高度重视
[user@linux]$ egrep --color=auto 'Version (15.1\(4\)M7|15.1\(4\)M10|15.2\(1\)T4)' DeviceA
Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 15.1(4)M10, RELEASE SOFTWARE (fc2)
[user@linux]$
使用 grep 输出作为变量var
[user@linux]$ var=$(egrep --color=auto 'Version (15.1\(4\)M7|15.1\(4\)M10|15.2\(1\)T4)' DeviceA)
[user@linux]$
打印变量var
[user@linux]$ echo $var
Cisco IOS Software, 1841 Software (C1841-ADVSECURITYK9-M), Version 15.1(4)M10, RELEASE SOFTWARE (fc2)
[user@linux]$
var
我可以Version 15.1(4)M10
在执行时获取而不是获取整行echo $var
吗?
期望的输出
[user@linux]$ echo $var
Version 15.1(4)M10
[user@linux]$
解决方案
正如 Jww 所提到的,这可以很容易地使用-o
标志来实现:
命令行:
fgrep -o "Version 15.1(4)M10" testtttt.txt, or, for introducing variable handling:
echo $(fgrep -o "Version 15.1(4)M10" testtttt.txt)
在脚本中,您可能会执行类似(未测试)的操作:
var=$(fgrep -o "Version 15.1(4)M10" testtttt.txt)
echo $var
推荐阅读
- tfs - 在 Azure DevOps 中查看 Sprint 列表
- mono - 如何重新初始化 MONO.mono_load_runtime_and_bcl
- mysql - 相关子查询 MySQL
- elasticsearch - 无法初始化日志记录驱动程序:拨号 tcp 127.0.0.1:1514:连接:连接被拒绝
- javascript - C# .NET 5.0 中的 Javascript“事件源”
- error-handling - Snoar 说:可能会抛出“NullPointerException”;“getFieldError()”可以返回 null
- node.js - Firebase 函数不会读取 Firestore 上的文档
- r - 重命名多ggboxplot中的因子变量
- javascript - React Leaflet - TileLayer 首次加载时不渲染
- python - 查找 Contour opencv 时缺少部分轮廓(受白色背景、文档扫描仪影响)