regex - 使用 DF、Grep、Awk 列出卷 | 重击壳
问题描述
尝试打印以 /Volumes/ 开头的所有条目,这将列出 mac 上已安装的卷。请参阅更新。
IFS=$'\n' read -r -d '' -a volumes < <(
df | egrep -o '/Volumes/.*'
)
echo "${volumes}"
更新 1:这有效,但在每个新行之前打印一个空格。
#!/usr/bin/env bash
IFS=$'\n' read -r -d '' -a volumes < <(
df | egrep -oi '(\s+/Volumes/\S+)'
)
printf "%s\n" "${volumes[@]}"
更新 2:有效,但不打印带有空格的卷名
IFS=$'\n' read -d '' -ra volumes < <(
df | awk 'index($NF, "/Volumes/")==1 { print $NF }'
)
printf '%s\n' ${volumes[@]}
更新 3:在新行上打印带有空格的卷名的第二部分
IFS=$'\n' read -d '' -ra volumes < <(
df | awk -F ' {2,}' 'index($NF, "/Volumes/")==1 { print $NF }'
)
printf '%s\n' ${volumes[@]}
解决方案:
测试平台: macOS Catalina
IFS=$'\n' read -d '' -ra volumes < <(
df | sed -En 's~.* (/Volumes/.+)$~\1~p'
)
printf '%s\n' "${volumes[@]}"
测向输出
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk1s5 976490576 21517232 529729936 4% 484332 4881968548 0% /
devfs 781 781 0 100% 1352 0 100% /dev
/dev/disk1s1 976490576 413251888 529729936 44% 576448 4881876432 0% /System/Volumes/Data
/dev/disk1s4 976490576 10487872 529729936 2% 6 4882452874 0% /private/var/vm
map auto_home 0 0 0 100% 0 0 100% /System/Volumes/Data/home
/dev/disk7s1 40880 5760 35120 15% 186 4294967093 0% /private/tmp/tnt12079/mount
/dev/disk8s1 21448 1560 19888 8% 7 4294967272 0% /Volumes/usb drive
/dev/disk6s1 9766926680 8646662552 1119135456 89% 18530 48834614870 0% /Volumes/root
/dev/disk2s1 60425344 26823168 33602176 45% 419112 525034 44% /Volumes/KINGS TON
解决方案
您可以在以下位置使用此管道OSX
:
IFS=$'\n' read -d '' -ra volumes < <(
df | sed -En 's~.* (/Volumes/.+)$~\1~p'
)
检查数组内容:
printf '%s\n' "${volumes[@]}"
或者
declare -p volumes
declare -a volumes=([0]="/Volumes/Recovery" [1]="/Volumes/Preboot")
推荐阅读
- android - 没有可从 fire_base 检索的数据,并且适配器出现故障
- .net - 使用 Podio API Importer Service 分配 App Item Field 值以指向 Podio 中的现有项目
- javascript - 用于多个字段的单个 jQuery 图像选择器
- data-structures - 与 kd-tree 的交集测试
- python-3.x - 带有斯堪的纳维亚字母的 Request()
- javascript - JavaScript:如何更改存储在数组中的变量的属性
- java - 插入小数点 Java 计算器 GUI
- appium - 为 Appium 添加所需功能时遇到问题
- java - NetBeans 无法连接到(gitlab 存储库)的存储库
- python - firebase 中生成的字符串是什么?