shell如何将grep抓取到的内容按行存入数组内
时间: 2024-10-27 08:03:03 浏览: 26
在 Bash Shell 中,你可以使用 `grep` 和 `mapfile` 或者 `read` 命令结合来获取 grep 搜索结果,并将其内容按行存入数组。这里是一个例子,假设你想从文件 `input.txt` 中使用 `grep` 查找包含关键词的内容:
```bash
#!/bin/bash
# 定义搜索关键词
keyword="example"
# 使用 grep 获取匹配的行,并通过 mapfile 存入数组
output_array=( $(grep "$keyword" input.txt) )
# 确认数组已被填充
if [ ${#output_array[@]} -gt 0 ]; then
echo "Array elements:"
for line in "${output_array[@]}"; do
echo "$line"
done
else
echo "No matching lines found."
fi
```
这里 `$(...)` 是命令替换,它会捕获命令的输出,并将其作为字符串传递给 `mapfile`。`mapfile` 将这些行转换成数组 `output_array` 的各个元素。
如果你的 `grep` 结果很长,`mapfile` 可能不会工作得很好,因为它的设计是为了处理较小的数据集。在这种情况下,你可以选择使用 `read` 进行逐行读取:
```bash
output_array=()
while IFS= read -r line; do
output_array+=("$line")
done < <(grep "$keyword" input.txt)
# ... 其他部分保持不变 ...
```
这里 `<(...)` 创建了一个在此上下文中运行的子shell,用于执行 `grep` 命令。
阅读全文