bash - 使用 awk 一次性分配两个变量
问题描述
我有一个日志,每分钟都会收到以下数据:
ID: Unit3443 IP: 192.168.1.1 MAC: 00:20:c0:04:e8:ab
ID: Unit2222 IP: 192.168.2.2 MAC: 00:40:c0:05:e8:bc
我用 tail -1 /File 抓住最后一行
是否可以一口气将这两个条目都分配给变量?目前我有
UnitID=`tail -1 $File|awk '{print $1}'`
UnitIP=`tail -1 $File|awk '{print $2}'`
这可行,但它需要读取文件两次,我担心的是在第二次读取期间,tail -1 的输出将不再相同。
是否可以在一次读取行中分配这两个变量?
解决方案
arr=( $(tail -1 "$file" | awk '{print $1, $2}') )
UnitID=${arr[0]}
UnitIP=${arr[1]}
or:
id=0
ip=1
unit=( $(tail -1 "$file" | awk '{print $1, $2}') )
echo "${unit[id]}"
echo "${unit[ip]}"
or:
line=$(tail -1 "$file" | awk '{print $1, $2}')
UnitID="${line% *}"
UnitIP="${line#* }"
推荐阅读
- android - Android C++:加载的共享库中未捕获的异常
- excel - 运行 VBA 脚本后“重置”集合
- javascript - How to communcation between web inside webview back to react native apps
- asp.net - ASP.NET Upload file control and showing wait message
- scala - fs2.Stream observeAsync 不会异步执行给定的接收器
- c++ - 从具有派生类作为参数的模板类继承
- puppeteer - 如何使用 puppeteer 为 whatsapp 创建爬网?
- sap-cloud-platform - 如何访问 SAP Cloud 集成工具?
- apache-kafka - Kstream 如何管理连接和主题过期
- android - 在 raspberryPi 上通过 REST 保存图像以进行图像识别