bash 脚本打印的缩进文本段落

bash 脚本打印的缩进文本段落

我有一个 bash 脚本来回显文本段落。我希望它们缩进。

例子:

echo "Something"
echo -e "\tfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo"

将打印类似这样的内容:

Something
      foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
foo foo foo foo foo foo foo foo foo foo foo foo

但我想要的是这个:

Something
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo 
    foo foo foo foo foo foo foo foo foo foo foo foo

我更喜欢避免手动对许多这样的段落进行换行。

我已经看到了各种使用的技术sed等等,但我只需要依赖 shell 内置函数(应该尽可能简单)。

更新
这么说吧——man页面(对于任何随机命令)如何很好地格式化所有这些段落?他们肯定不是手工断线的吗?我认为他们在记录基本命令时除了内置命令之外没有使用任何其他东西?

答案1

somecommand | fold | awk '{ print "\t" $0 }'

somecommand这将从(例如)获取输出echo,将其发送到fold,这会将其折叠为 80 个字符(用于fold -w N折叠N字符)。然后awk脚本将打印由制表符缩进的每一行。

在 pure 中进行折叠bash必然会导致脚本更加复杂。

答案2

怎么样fmt(来自 GNU Coreutils)

{ echo "Something"
echo -e "\tfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo"
} | fmt
Something
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo foo foo foo foo

您可以添加一个选项-w n来将换行的长度更改为n

相关内容