linux - printf - 打印 n 然后在下一行打印一个字符 n 次
问题描述
我有一个变量n
,它是一个数字,我正在尝试生成如下所示的输出n=10
:
10
1 1 1 1 1 1 1 1 1 1
所以第一行是n
,第二行由n
字符组成,在这个例子1
中。
我知道我可以用命令行生成第二行:
$ n=10
$ printf '1 %.0s' {1..$n}
1 1 1 1 1 1 1 1 1 1 %
所以我可以通过这一系列命令得到我想要的输出:
$ n=10
$ printf "$n\n"; printf '1 %.0s' {1..$n}; printf '\n'
10
1 1 1 1 1 1 1 1 1 1
但我不知道如何将这些命令组合成一个printf
命令。强调成为一个命令的原因是我试图将此输出重定向到另一个命令进行处理。
我本来打算在Unix Stackexchange上问这个问题,但我在手册中printf
看到它与 in 的工作原理相同C
,所以我想在这里我可能会得到更好的结果。
FORMAT 控制输出,就像在 C printf 中一样。
解决方案
用于{}
对所有命令进行分组,以便您可以将它们全部重定向到下一个命令。
{ printf "$n\n"; printf '1 %.0s' {1..$n}; printf '\n'; } | some_other_command
推荐阅读
- python - 使用 Python 测试嵌入式系统
- javascript - 如何处理mongo中的多对多关系
- javascript - 使用清晰的 node.js 保留旋转元数据
- reactjs - 如何停止重新安装并避免使用 React Router 5 提升状态和
? - java - 通过代理连接到rabbitmq服务器
- json - 如何通过 ARM 模板在单个 azure 资源上添加多个 RBAC 角色
- libreoffice - 是否有为内联注释、参考和行数构建的文字处理软件?
- wordpress - 带有 meta_key 的 WordPress 查询无法按预期工作
- android - 如何从导航控制器清除回栈
- matlab - 使用鼠标右键选择后删除 UItable 中的行 - Matlab 2020a