在 shell 脚本中,当你使用 grep
命令将结果赋给一个变量时,会丢失换行符。为了解决这个问题,你可以使用 mapfile
命令将 grep
的输出结果存储到一个数组变量中,然后使用 printf
命令将数组中的元素输出到一个变量中,从而保留换行符。
以下是一个示例脚本:
#!/bin/bash
# 使用 mapfile 命令将 grep 结果存储到数组变量中
mapfile -t result_array < <(grep 'pattern' file.txt)
# 使用 printf 命令将数组中的元素输出到变量中,保留换行符
result_var=$(printf '%s\n' "${result_array[@]}")
# 输出结果
echo "$result_var"
在这个示例中,我们使用 mapfile
命令将 grep
命令的结果存储到一个名为 result_array
的数组变量中。然后,我们使用 printf
命令将数组中的元素输出到一个名为 result_var
的变量中,并保留换行符。最后,我们使用 echo
命令输出结果。
需要注意的是,这个方法只适用于将 grep
结果存储到一个变量中,如果你需要将 grep
结果传递给其他命令,可以使用管道(pipe)来实现。例如:
grep 'pattern' file.txt | xargs -I {} echo "Result: {}"
在这个示例中,我们使用管道将 grep
命令的结果传递给 xargs
命令,然后使用 -I
选项指定一个占位符 {}
,最后使用 echo
命令输出结果。
领取专属 10元无门槛券
手把手带您无忧上云