Чтобы получить только те значения, которые вам нужны, если вас не интересует расстояние между полями:
$ awk '$1=="H"{$3=p} {p=$3} 1' file
O HOH 1 11.700 -11.906 1.533
H HOH 1 12.561 -12.318 1.596
H HOH 1 11.445 -12.031 0.627
O HOH 2 17.897 8.999 -0.104
H HOH 2 18.444 8.521 0.516
H HOH 2 17.127 8.457 -0.223
O HOH 3 -0.688 10.310 -15.189
H HOH 3 -0.760 9.366 -15.055
H HOH 3 -0.494 10.665 -14.324
O HOH 4 -10.418 3.733 4.069
H HOH 4 -9.928 3.726 4.897
H HOH 4 -11.222 4.218 4.268
O HOH 5 2.655 -8.910 13.338
H HOH 5 2.377 -9.739 13.737
H HOH 5 1.847 -8.531 12.992
O HOH 6 -0.191 -1.010 -19.469
H HOH 6 0.455 -1.460 -18.924
H HOH 6 -0.571 -0.343 -18.895
O HOH 7 14.338 -15.985 -1.467
H HOH 7 15.129 -15.647 -1.886
H HOH 7 13.854 -16.408 -2.175
O HOH 8 -15.510 -7.073 1.857
H HOH 8 -15.526 -6.116 1.874
H HOH 8 -16.341 -7.321 1.464
O HOH 9 9.155 6.561 -7.729
H HOH 9 9.419 7.335 -7.245
H HOH 9 9.943 6.018 -7.768
O HOH 999999 9.155 6.561 -7.729
H HOH 999999 9.419 7.335 -7.245
H HOH 999999 9.943 6.018 -7.768
или разделенные пробелом последние 4 поля, выровненные по правому краю:
$ awk '$1=="H"{$3=p} {p=$3} 1' file | column -t -R3,4,5,6
O HOH 1 11.700 -11.906 1.533
H HOH 1 12.561 -12.318 1.596
H HOH 1 11.445 -12.031 0.627
O HOH 2 17.897 8.999 -0.104
H HOH 2 18.444 8.521 0.516
H HOH 2 17.127 8.457 -0.223
O HOH 3 -0.688 10.310 -15.189
H HOH 3 -0.760 9.366 -15.055
H HOH 3 -0.494 10.665 -14.324
O HOH 4 -10.418 3.733 4.069
H HOH 4 -9.928 3.726 4.897
H HOH 4 -11.222 4.218 4.268
O HOH 5 2.655 -8.910 13.338
H HOH 5 2.377 -9.739 13.737
H HOH 5 1.847 -8.531 12.992
O HOH 6 -0.191 -1.010 -19.469
H HOH 6 0.455 -1.460 -18.924
H HOH 6 -0.571 -0.343 -18.895
O HOH 7 14.338 -15.985 -1.467
H HOH 7 15.129 -15.647 -1.886
H HOH 7 13.854 -16.408 -2.175
O HOH 8 -15.510 -7.073 1.857
H HOH 8 -15.526 -6.116 1.874
H HOH 8 -16.341 -7.321 1.464
O HOH 9 9.155 6.561 -7.729
H HOH 9 9.419 7.335 -7.245
H HOH 9 9.943 6.018 -7.768
O HOH 999999 9.155 6.561 -7.729
H HOH 999999 9.419 7.335 -7.245
H HOH 999999 9.943 6.018 -7.768
или в формате TSV:
$ awk -v OFS='\t' '{$3=($1=="H" ? p : $3); p=$3} 1' file
O HOH 1 11.700 -11.906 1.533
H HOH 1 12.561 -12.318 1.596
H HOH 1 11.445 -12.031 0.627
O HOH 2 17.897 8.999 -0.104
H HOH 2 18.444 8.521 0.516
H HOH 2 17.127 8.457 -0.223
O HOH 3 -0.688 10.310 -15.189
H HOH 3 -0.760 9.366 -15.055
H HOH 3 -0.494 10.665 -14.324
O HOH 4 -10.418 3.733 4.069
H HOH 4 -9.928 3.726 4.897
H HOH 4 -11.222 4.218 4.268
O HOH 5 2.655 -8.910 13.338
H HOH 5 2.377 -9.739 13.737
H HOH 5 1.847 -8.531 12.992
O HOH 6 -0.191 -1.010 -19.469
H HOH 6 0.455 -1.460 -18.924
H HOH 6 -0.571 -0.343 -18.895
O HOH 7 14.338 -15.985 -1.467
H HOH 7 15.129 -15.647 -1.886
H HOH 7 13.854 -16.408 -2.175
O HOH 8 -15.510 -7.073 1.857
H HOH 8 -15.526 -6.116 1.874
H HOH 8 -16.341 -7.321 1.464
O HOH 9 9.155 6.561 -7.729
H HOH 9 9.419 7.335 -7.245
H HOH 9 9.943 6.018 -7.768
O HOH 999999 9.155 6.561 -7.729
H HOH 999999 9.419 7.335 -7.245
H HOH 999999 9.943 6.018 -7.768
Если вам необходимо сохранить исходный интервал, тогда с GNU awk для 4-го аргумента для split () это сохранит любой интервал, с которого вы начали:
$ cat tst.awk
{
if ($1 == "H") {
split(prev,pflds,FS,pseps)
n = split($0,flds,FS,seps)
seps[2] = pseps[2]
flds[3] = pflds[3]
seps[3] = sprintf("%*s",length(pseps[3]) + length(pflds[4]) - length(flds[4]),"")
$0 = ""
for (i=1; i<=n; i++) {
$0 = $0 flds[i] seps[i]
}
}
print
prev = $0
}
.
$ awk -f tst.awk file
O HOH 1 11.700 -11.906 1.533
H HOH 1 12.561 -12.318 1.596
H HOH 1 11.445 -12.031 0.627
O HOH 2 17.897 8.999 -0.104
H HOH 2 18.444 8.521 0.516
H HOH 2 17.127 8.457 -0.223
O HOH 3 -0.688 10.310 -15.189
H HOH 3 -0.760 9.366 -15.055
H HOH 3 -0.494 10.665 -14.324
O HOH 4 -10.418 3.733 4.069
H HOH 4 -9.928 3.726 4.897
H HOH 4 -11.222 4.218 4.268
O HOH 5 2.655 -8.910 13.338
H HOH 5 2.377 -9.739 13.737
H HOH 5 1.847 -8.531 12.992
O HOH 6 -0.191 -1.010 -19.469
H HOH 6 0.455 -1.460 -18.924
H HOH 6 -0.571 -0.343 -18.895
O HOH 7 14.338 -15.985 -1.467
H HOH 7 15.129 -15.647 -1.886
H HOH 7 13.854 -16.408 -2.175
O HOH 8 -15.510 -7.073 1.857
H HOH 8 -15.526 -6.116 1.874
H HOH 8 -16.341 -7.321 1.464
O HOH 9 9.155 6.561 -7.729
H HOH 9 9.419 7.335 -7.245
H HOH 9 9.943 6.018 -7.768
O HOH 999999 9.155 6.561 -7.729
H HOH 999999 9.419 7.335 -7.245
H HOH 999999 9.943 6.018 -7.768