![读取第 n 行并拆分为数组](https://linux22.com/image/210438/%E8%AF%BB%E5%8F%96%E7%AC%AC%20n%20%E8%A1%8C%E5%B9%B6%E6%8B%86%E5%88%86%E4%B8%BA%E6%95%B0%E7%BB%84.png)
尝试从文件中读取第 n 行并根据分隔符拆分为数组
HEAD_START=4
IFS='|' read -r -a headers < sed "${HEAD_START}q;d" "/FILE_UPLOADS/Checklist-Relationship (4).txt"
上面给出"sed: cannot open [No such file or directory]"
但是当我sed "${HEAD_START}q;d" "/FILE_UPLOADS/Checklist-Relationship (4).txt"
在提示符下运行时它工作正常
答案1
read -r -a headers < sed ...
正在尝试打开一个名为sed
“read”的文件。
在 bash 中,要sed
作为命令运行并使其输出在标准输入流上可用,您可以使用流程替代:
IFS='|' read -r -a headers < <(sed "${HEAD_START}q;d" "/FILE_UPLOADS/Checklist-Relationship (4).txt")
答案2
如果文件不太大,我会跳过 sed:
mapfile -t lines < filename
IFS='|' read -ra headers <<< "${lines[HEAD_START - 1]}"