如何在Bash中将带换行的两个字符串按列格式打印为表格?
在Bash中按列对齐打印字符串的方法
你可以用paste配合column命令来实现需求,这是最直接的方案:
paste <(echo "$string1") <(echo "$string2") | column -t -s $'\t'
命令解释:
<(echo "$string1")和<(echo "$string2")是Bash的进程替换,把两个字符串的换行内容分别作为临时输入源传给paste。paste会将两个输入的对应行用制表符拼接(比如第一行是HEADER1\tHEADER2)。column -t -s $'\t'以制表符为分隔符,自动对齐所有列,输出整齐的表格格式。
另外也可以用awk实现,逻辑更灵活:
awk 'NR==FNR {lines[NR]=$0; next} {print lines[FNR], $0}' <(echo "$string1") <(echo "$string2") | column -t
为什么你的echo命令不行?
echo "$string1 $string2" 会先输出string1的所有行,再输出string2的内容,相当于把两个字符串的内容按顺序拼接,自然无法对应行对齐。
内容的提问来源于stack exchange,提问作者Sasha Milic
相关产品推荐
相关产品推荐

