如何解决解析字符串列表并根据行号枚举它们
有人可以帮我获取字符串列表并根据行号枚举字符串值吗?
我想弄清楚如何解析我所有已知的最喜欢的网络 SSID,然后根据输出的顺序为每个 SSID 分配一个编号。示例:
如果我运行 networksetup -listpreferredwirelessnetworks en0(在 macOS 上),我会根据我最近的 Wi-Fi 收藏夹列表(Apple 称之为“首选网络”列表)得到以下输出:
Preferred networks on en0:
Denny's
Hilton Hotel 2465
Hipster Cafe
My_Moms_Basement
Airport_bar
Marriot - Public-5G
OFFICE
我想解析上面的输出,搜索/过滤我的公司 SSID(在本例中为“OFFICE”),然后获取其行号(在本例中,“OFFICE”列在第 8 行 - 如果您计算标题“en0 上的首选网络:”)。
最终我想确定 SSID“OFFICE”是否在列表的顶部,如果不是,那么我将使用 networksetup 命令将其移到顶部 - 但我只想在以下情况下采取行动SSID“OFFICE”尚未位于顶部。在这种情况下,Apple 将第一行视为“索引 0”(因此行/数组计数在技术上从 0、1、2、3 等开始)。
我尝试过 wc、排序和各种计数循环,但我似乎无法得到它给我想要的输出。
谢谢!
解决方法
如果你想为文件的每一行分配一个索引,你可以使用一个数组(在 bash 中声明 -a)
假设你提到的行在一个名为“preferred_networks”的文件中,你可以写这个来创建数组(每行一个数组条目):
declare -a ssid
exec 5<./preferred_networks
((i=0))
while read line<&5; do
ssid[i]=$line
((++i))
done
然后您可以使用以下循环读取您的数组(包含 $i 元素):
for j in `seq 0 $i` ; do
echo ssid[$j]
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。