我有几个文件包含需要提取并存储到数组中的 ID,问题是所有 ID 都在同一行,并且都遵循相同的模式,而且每个文件都有随机数量的 ID 需要提取。例如,一个文件可能有 1 个 ID,另一个可能有 4 个 ID。所以我不知道如何让 sed 命令工作。考虑到随机数量的 ID,我甚至不确定我尝试做的事情是否可行
存储 ID 的行遵循以下结构
somerandomstuf.wesbsite.ac.uk/people/js9g09'>somerandomstuf.wesbsite.ac.uk/people/dd13'>....somerandomstuf.wesbsite.ac.uk/people/pq919'>......
ID 为 js9g09、dd13 和 pq919
我已经完成了以下操作(我只是想让我的代码适用于一个文件 atm)
for file in $FOLDER/CLA.html
do
declare -a lec_id_array
lec_id_array=$(grep "uk\/people" $file | sed )
echo "$lec_id_array"
done
但我试图实现以下结果:
lec_id_array=$(js9g09 dd13 pq919)
我不知道这是否可行,或者我是否应该用另一种方式来处理这个问题
答案1
我不太愿意建议您坚持使用 grep (和/或 sed)来解析 HTML,但是如果这是您的选择,那么我建议您这样做:
mapfile -t lec_id_array < <(grep -oP 'people\/\K\w+' file.html)
mapfile
(又名readarray
) 是 bash shell 内置的 (尽管在 zsh 中也可以使用) - 我假设这是可以接受的,因为你标记了这个问题bash
。