linux – 在列中打印以空格分隔的列表

linux – 在列中打印以空格分隔的列表,第1张

概述我有这个Makefile,它有一个名为“MODULES”的变量,它列出了我在构建中激活的所有模块. 这个列表用空格分隔,所以当我回显$(MODULES)时它看起来像这样: module1 module2 module3 module4 mod5 mod6 mod7 module8 module9 我想要做的是在编译时显示的某些列中显示此列表. 像这样: Modules activated:mod 我有这个Makefile,它有一个名为“MODulES”的变量,它列出了我在构建中激活的所有模块.

这个列表用空格分隔,所以当我回显$(MODulES)时它看起来像这样:

module1 module2 module3 module4 mod5 mod6 mod7 module8 module9

我想要做的是在编译时显示的某些列中显示此列表.

像这样:

Modules activated:module1 module2 module3 module4 mod5    mod6 mod7    module8 module9

理想情况下,列withs将调整为列中最大模块的宽度(参见mod7);并且将根据当前终端的宽度调整列数.

现在,我发现了一些似乎这样做的unix实用程序,比如column,但我无法使用我的set.

你有一些技巧可以让我这样做吗?

编辑:

在下面选择的答案中,我终于在我的Makefile中破解了这个命令:

@printf '%s\n' $(MODulES) | sort | column
解决方法
printf '%-12s%-12s%s\n' $modules

这会占用变量的内容,占用占位符在格式字符串中出现的次数,并重复使用,直到消耗掉所有内容为止.

列实用程序将自动为您生成列:

column <<< "$(printf '%s\n' $module)"

这是第一列.如果你想要行优先:

column -x <<< "$(printf '%s\n' $module)"
总结

以上是内存溢出为你收集整理的linux – 在列中打印以空格分隔的列表全部内容,希望文章能够帮你解决linux – 在列中打印以空格分隔的列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1027144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存