有一个文本文件,每行(除去行首和行末的空白)的长度都不超过80个字符,例如 Vim 的帮助文档。现在想将此文件的每一行都居中显示,宽度为80个字符。可以用以下 sed 脚本实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/sed -f # Put 80 spaces in the hold space 1 { x s/^$/ / s/^.*$/&&&&&&&&/ x } # del leading and trailing spaces y/\t/ / s/^ *// s/ *$// # add a newline and 80 spaces to end of line G # keep first 81 chars (80 + a newline) s/^\(.\{81\}\).*$/\1/ # \2 matches half of the spaces, which are moved to the beginning s/^\(.*\)\n\(.*\)\2/\2\1/ |
本作品由 Yysfire 创作,采用进行许可。转载时请在显著位置标明本文永久链接:
http://yysfire.github.io/linux/sed-example-center-line.html