Вы можете попробовать этот awk
в своем первом примере:
awk 'NF == 1 { $2 = -9; } 1' file
Как упоминалось в других сообщениях с gawk
, вы можете использовать FIELDWIDTHS
, так что вы можете попробовать это со своим вторым:
gawk 'BEGIN { FIELDWIDTHS = "4 1 1 1 2 1 1"} { for (i = 1; i <= NF; i++) { if ($i == "") { if (i == 7) $i = "-9"; else $i = " "; } } printf("%s %s %s %s\n", $1, $3, $5, $7); }' file