我试图通过在链标识符后面添加一个空格来拆分.pdb
文件的第五列:
ATOM 12107 N CYS D1742 -42.369 73.203 -44.599 1.00224.20 C N
这样输出看起来像:
ATOM 12107 N CYS D 1742 -42.369 73.203 -44.599 1.00224.20 C N
字母在文件中更改后的数字。我试过了
sed -i 's/D/D /5' test.pdb
没有成功,我想我应该引入通用字符来替换字母后面的数字并在命令中引入它,以便能够迭代地执行此操作。
答案 0 :(得分:1)
关注awk
可能对您有帮助。
awk '{$5=substr($5,1,1) FS substr($5,2)} 1' OFS="\t" Input_file
如果您需要将输出保存到相同的Input_file本身,那么您也可以在上面的代码中附加> temp_file && mv temp_file Input_file
。
答案 1 :(得分:1)
使用sed
您需要自己计算字段数,但不会将空格标准化为副作用。
$ sed -E 's/((\S+\s+){4}.)/\1 /' file
ATOM 12107 N CYS D 1742 -42.369 73.203 -44.599 1.00224.20 C N
答案 2 :(得分:0)
使用GNU awk。由于您没有指定字段分隔符是什么,并且它似乎是一堆空格(是的,最可能是tab),我使用split
将分隔符保留为数组seps
和{{ 1}}将空格添加到第五个字段:
sub
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/(\S)(\S*)/\1 \2/5' file
列必须包含一个或多个非空格字符,这会在第五列的第一个字符和零个或多个字符之间放置一个空格。