我有一个文件,其中包含以字母结尾的值列表。有没有一种简单的方法可以在每行的最后一个字符之前添加空格或制表符以分隔数字和字母?
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/
这将去掉所有尾随空格,并在每行最后一个剩余字符之前添加一个空格。