bash多行字符串缩进问题?

发布于 2022-09-05 09:51:06 字数 308 浏览 32 评论 0

问题:
怎么使字符串b输出时每行缩进4个空格?
图片描述

希望得到的效果:
图片描述

求教!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

谎言月老 2022-09-12 09:51:06

如果要求是除了第一行,都缩进,用sed很方便:

a="test message:"
b="a\nb\nc\nd\n"
c="$a\n$b"
printf "$c" | sed '1!s/^/    /'

或者使用bash的参数替换功能,"\n"对bash来说,只是两个普通字符,在它后面加4个空格就是了:

printf "${c//\\n/\n    }"

如果是希望给变量b加上缩进,那可以:

b="$(printf $b | pr -to4)"
浅唱ヾ落雨殇 2022-09-12 09:51:06
a="test message:"
s="    "
b="$s"a"\n$s"b"\n$s"c"\n$s"d"\n"
c="$a\n$b"
printf "$c"

clipboard.png

薄荷港 2022-09-12 09:51:06
a="test message"
b="a b c d"
c="$a $b"
printf '%s %4s\n%4s\n%4s\n%4s\n%4s\n' $c
test message
   a
   b
   c
   d
静待花开 2022-09-12 09:51:06

可以这样:

a="test message:"
b="\ta\n\tb\n\tc\n\td\n"
c="$a\n$b"
printf "$c"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文