如何在bash中打印一些文本,并将其填充到一定宽度的空格?
我在一个bash脚本中回显一些文本,其中包含一个变量,并希望填充该变量,使其始终在右侧有适当的空格数,以保持其余文本对齐 下面是我想要的一个例子:如何在bash中打印一些文本,并将其填充到一定宽度的空格?,bash,variables,printing,formatting,printf,Bash,Variables,Printing,Formatting,Printf,我在一个bash脚本中回显一些文本,其中包含一个变量,并希望填充该变量,使其始终在右侧有适当的空格数,以保持其余文本对齐 下面是我想要的一个例子: Echoing random number 1080 [ OK ] Echoing random number 443 [ OK ] Echoing random number 34842 [ OK ] 数值的长度可能不同(可能不超过5或6位) 我知道printf可以做到这一点,并通过执行以下操作右对齐变量: printf "Ec
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
数值的长度可能不同(可能不超过5或6位)
我知道printf可以做到这一点,并通过执行以下操作右对齐变量:
printf "Echoing random number %5s [ OK ]" $RAND_NUM
但是,这将使文本格式如下:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
当然,仅仅与空格呼应是行不通的:
echo "Echoing random number ${RAND_NUM} [ OK ]"
产生以下结果:
Echoing random number 1080 [ OK ]
Echoing random number 443 [ OK ]
Echoing random number 34842 [ OK ]
有没有像我的第一个示例那样打印文本的方法?使用
-
左对齐字段
printf "Echoing random number %-5s [ OK ]" $RAND_NUM
或者,如果您使用的是Red Hat Linux系统,则会有一些预定义的函数,这些函数将打印出绿色的“确定”和红色的“失败”提示(您在引导过程中看到的提示):
将所有行收集到一个var或文本文件中,然后通过
列
命令进行传输。
这就是(我的示例文件/tmp/columns.txt
)
变成这样
Echoing random number 1080 [ OK ]
Echoing random number 44332356 [ OK ]
Echoing random number 34842 [ OK ]
Echoing random number 342 [ OK ]
示例命令:
cat/tmp/columns.txt | column-t
展开sobi3ch的答案:如果您使用除名器(我使用tilda(~)合并字符串,则可以使用-s参数调用column来拆分该点的文本
为虐待猫道歉:
foo.txt :
Echoing random number 1080~[ OK ]
Echoing random number 1080~[ OK ]
Echoing random number 1080~[ Failed ]
然后:
cat foo.txt | column -s'~'
Echoing random number 1080 [ OK ]
Echoing random number 1080 [ OK ]
Echoing random number 1080 [ Failed ]
您能否在redhat中添加指向这些ok/failed函数定义的链接?@user35186请参阅您系统上的
/lib/lsb/init functions
,这是脚本的现代跨发行版。如果你有它,你可以使用log\u success\u msg
,log\u failure\u msg
,和log\u warning\u msg
。如果你用一个消除器(我使用tilda(~)来处理字符串,你可以用-s参数调用列来分割该字符上的列。例如:echo“echooning random number 1080~[OK]\n选择random number 1080~[OK]”| column-s'~'给出了echooning random number 1080[OK]如果你不想被指控患有糖尿病,那么就这样做:column-s'~'
foo.txt :
Echoing random number 1080~[ OK ]
Echoing random number 1080~[ OK ]
Echoing random number 1080~[ Failed ]
cat foo.txt | column -s'~'
Echoing random number 1080 [ OK ]
Echoing random number 1080 [ OK ]
Echoing random number 1080 [ Failed ]