如何在Unix中的每行末尾添加100个空格

use*_*029 7 unix shell awk

我有一个文件,每行应该包含200个字符.我收到了一个源文件,每行只有100个字符.我现在需要为每一行添加100个额外的空格.如果空格很少,我们可以使用sed,如:

 sed 's/$/     /' filename > newfilename
Run Code Online (Sandbox Code Playgroud)

由于它是100个空格,任何人都可以告诉我是否可以在Unix中添加?

kar*_*kfa 5

如果您希望每行固定n个字符(不相信输入文件每行确切有m个字符),请按照以下步骤操作。对于每行字符数不同的输入文件:

$ cat file
1
12
123
1234
12345
Run Code Online (Sandbox Code Playgroud)

扩展到每行10个字符。

$ awk '{printf "%-10s\n", $0}' file | cat -e

1         $
12        $
123       $
1234      $
12345     $
Run Code Online (Sandbox Code Playgroud)

显然在脚本中将10更改为200。这里$显示了行尾,它不是字符。您不需要cat -e,这里只是显示行已扩展。


Mar*_*ell 3

根据格伦的建议更新

格伦在评论中建议,替换是不必要的,您只需添加空格即可 - 不过,进一步考虑该逻辑,您甚至不需要添加,您可以在say原始行之后添加空格。

perl -nlE 'say $_," "x100' file
Run Code Online (Sandbox Code Playgroud)

原答案

使用 Perl:

perl -pe 's/$/" " x 100/e' file
Run Code Online (Sandbox Code Playgroud)

这就是说... “将 ( s) 每行 ( ) 的末尾替换为100 次空格重复的$计算表达式 (e )” 。

如果您想将所有行填充到 200 个字符,即使输入文件参差不齐(所有行的长度不同),您可以使用如下内容:

perl -pe '$pad=200-length;s/$/" " x $pad/e'
Run Code Online (Sandbox Code Playgroud)

这将组成 83、102 和 197 个字符的行,每行 200 个字符。

  • 确实不需要搜索和替换。只需将空格附加到行:`$_ .= " "x100` (3认同)