在每行最后一个字符之前添加空格或制表符

在每行最后一个字符之前添加空格或制表符

我有一个文件,其中包含以字母结尾的值列表。有没有一种简单的方法可以在每行的最后一个字符之前添加空格或制表符以分隔数字和字母?

44A  
354T  
1453C  
77D

所以输出看起来像这样:

44 A  
354 T  
1453 C  
77 D

答案1

如果最后一个字符之后和行尾之前没有任何空格,请使用:

sed 's/.$/ &/' file

或者

perl -pe 's/.$/ $&/' file

如果行尾之前可以有空格,请改用:

perl -pe 's/(.*)(\S)/$1 $2/' file

答案2

这适用于所述情况:

sed 's/\(.\)$/\ \1/' file.txt 

如果你想要其他地方的空间,它就会崩溃。

答案3

如果行不为空...

perl -pe 'substr($_,-2,0)=" "'

答案4

在 vi 中,您可以使用以下命令执行此操作:

:%s/\(.\)$/ \1/

分解一下,这是:

:%s    #Apply substitution to all lines
   /\(.\)$    #Search for a single character followed by the end of the line
          / \1/    #Replace with a space followed by that character

这确实假设您的行尾没有任何空格。如果情况并非总是如此,请使用:

:%s/\(\S\)\s*$/ \1/

这将去掉所有尾随空格,并在每行最后一个剩余字符之前添加一个空格。

相关内容