使用bash创建缩进文本
我想以可读的方式将列表打印到屏幕上。我使用一个循环遍历每个元素,并创建一个新列表,该列表的格式为逗号和换行符。问题是在输出的第一行,我想要一个标题。例如,我想打印如下内容:使用bash创建缩进文本,bash,string,Bash,String,我想以可读的方式将列表打印到屏幕上。我使用一个循环遍历每个元素,并创建一个新列表,该列表的格式为逗号和换行符。问题是在输出的第一行,我想要一个标题。例如,我想打印如下内容: List: red, green, blue, black, cars, busses, ... 问题是在第二行和后面的行中创建缩进。我希望缩进是给定长度的。因此,问题简化为创建给定长度的空行。也就是说,我想要一个函数,create\u empty\u line\u长度,它输出给定数量的空格 length=5
List: red, green, blue, black, cars,
busses, ...
问题是在第二行和后面的行中创建缩进。我希望缩进是给定长度的。因此,问题简化为创建给定长度的空行。也就是说,我想要一个函数,create\u empty\u line\u长度
,它输出给定数量的空格
length=5
echo "start:$(create_empty_line_of_length $length) hello"
在这种情况下,输出应为:
start: hello
有人知道怎么做吗?会的
yes ' ' | head -7 | tr -d '\n'
把“7”改成你的号码
也许你应该看看
man fmt
还有
这可能是最有效的方法
大多数情况下,它是一个内置的shell,如果不是的话,/usr/bin/printf作为coreutils的一个后备版本存在
所以
产生
_hello
_world
(我在这里使用了u而不是空格,但是空格也起作用,因为bash理解“”)不确定这是否有助于你在“hello”和“world”前面不是应该有七个吗?无论如何,谢谢你。它起作用了:)不,“%7s”是一个纯对齐规则,它说“取一个字符串,并将其与位置7右对齐,即:它只会创建空间。“%2s”“hello world”不会添加任何空间,因为“hello world”大于2,但“%40s\n%40s\n”“hello”“world”将使hello and world与pos 40右对齐。我在提出此问题之前遇到的问题不需要它。不过,它很鼓舞人心!我将进一步探讨如何使用awk,因为它似乎是一个强大的工具。:)
printf '%7s%s\n%7s%s\n' '_' 'hello' '_' 'world'
_hello
_world