使用 sed 将多个 ID 存储在一个数组中,这些 ID 位于文件的同一行

使用 sed 将多个 ID 存储在一个数组中,这些 ID 位于文件的同一行

我有几个文件包含需要提取并存储到数组中的 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

相关内容