在 bash 中缩进输出的特定部分

在 bash 中缩进输出的特定部分

假设我有以下 bash 脚本,它可以查找所有错误。日志为它们提供一个标题,然后在其下方尾随 5 行。

#!/bin/bash
for ERR in `find -name "error.log"`;
do
    echo -e "---- LOG: $ERR ----";
    tail -n 5 $ERR;
done;

我希望它的输出像这样:

---- LOG: foo/error.log ----
    [error ....]
    [error ....]
---- LOG: foo/error.log ----
    [error ....]
    [error ....]
---- LOG: foo/error.log ----
    [error ....]
    [error ....]

其中tail'd 部分缩进了一些字符(例如 4 个或任何制表符)

我该如何缩进特定部分的输出?

答案1

通过 sed 管道传输你的 tail 命令:

tail -n 5 $ERR | sed -e 's/^/    /'

答案2

有很多方法。一种方法可能是简单地通过 sed 或 awk 管道并添加一些空格。

cat syslog | sed -e 's/^/    /'
#
cat syslog | sed -e 's/^/\t/'

相关内容