Avi*_*sov 5 awk shell-script text-processing
是否有一种简单的方法可以将文本与两侧的填充中心对齐,列宽是输入中最长的行?
例如,这个:
aaa
bbbb
c
ddddd
ee
Run Code Online (Sandbox Code Playgroud)
将变成这个(点代表空格):
.aaa.
bbbb.
..c..
ddddd
.ee..
Run Code Online (Sandbox Code Playgroud)
任何工具都可以。无论是它sed还是awk一堆coreutils工具。
编辑:我认为你们中的一些人误解了输出。输出用空格填充,而不是点。我在这里使用了点只是为了使它更清楚。
这是我的解决方案,如我对雷神答案的评论中所发布的:
awk -v M="`wc -L file`" '{ printf "%*s%*s", (M+length)/2, $0, (M-length+1)/2+1, "\n" }' < file
Run Code Online (Sandbox Code Playgroud)
我觉得它优雅而简洁地解决了问题,因此我将其重新发布作为答案。