2015-10-16 115 views
0

我想通过调整字段之间的间距来重新格式化文件。我已设法将内容转换为以下格式:awk格式化输出如何包含浮点数符号

130GLU HB2 383 0.058 5.178 2.925 
    130GLU  CG 384 -0.108 5.065 2.887 
    130GLU HG1 385 -0.079 5.007 2.963 

我无法正确理解的是带减号的浮标。上述格式由awk '{printf " %6s%7s%5s %5.3f %5.3f %5.3f\n",$1,$2,$3,$4,$5,$6}' file生成。不过,我希望得到以下几点:

130GLU HB2 383 0.058 5.178 2.925 
    130GLU  CG 384 -0.108 5.065 2.887 
    130GLU HG1 385 -0.079 5.007 2.963 

换句话说,在%5.3f5部分计数数量的字符,在这种情况下占标志。我怎样才能做到这一点?

回答

2

只是一个简单的变化 - 看看它是否工作:

awk '{printf " %6s%7s%5s % 5.3f % 5.3f % 5.3f\n",$1,$2,$3,$4,$5,$6}' file 
Result: 
    130GLU HB2 383 0.058 5.178 2.925 
    130GLU  CG 384 -0.108 5.065 2.887 
    130GLU HG1 385 -0.079 5.007 2.963 

awk '{printf " %6s%7s%5s %+5.3f %+5.3f %+5.3f\n",$1,$2,$3,$4,$5,$6}' 
Result: 
    130GLU HB2 383 +0.058 5.178 2.925 
    130GLU  CG 384 -0.108 5.065 2.887 
    130GLU HG1 385 -0.079 5.007 2.963 

编辑:

awk '{printf " %6s%7s%5s % 5.3f % 5.3f % 5.3f\n",$1,$2,$3,$4,$5,$6}' file 
Result: 
    130GLU HB2 383 0.058 5.178 2.925 
    130GLU  CG 384 -0.108 5.065 2.887 
    130GLU HG1 385 -0.079 5.007 2.963 
+0

感谢您的回答,但我需要的空格数保持为3减去符号字符。而且我也需要'+'不要出现。 – sodiumnitrate

+0

@sdiumnitrate那么第一个有什么问题呢? – melpomene

+0

@melpomene它有3个空白和负号。它需要3个空格,或2个空格和减号。 – sodiumnitrate