Data do Solaris / Aix
Infelizmente, não há solução possível com (apenas) a data do Solaris / Aix.
data do GNU
Se a data do gnu estiver disponível:
Construa a data necessária em uma variável:
$ date +'%Y/%m/01 -9 months'
2017/07/01 -9 months
$ a=$(date +'%Y/%m/01 -9 months')
$ a=$(date -d "$a" +'%Y%m%d')
$ a='MHHHRGFILE ('"$a"') 99991231'
$ echo "$a"
MHHHRGFILE (20161001) 99991231
Ou simplesmente:
$ a=$(date -d "$(date +'%Y/%m/01 -9 months')" +'%Y%m%d')
$ a='MHHHRGFILE ('"$a"') 99991231'
Bash
Se o bash (4.2+) estiver disponível: (usando 272 dias como equivalente a 9 meses)
$ TZ=UTC0 printf '%(%Y%m01)T' $(($(date +'%s') - 3600*24*272))
20161001
$ a=$(TZ=UTC0 printf '%(%Y%m01)T' $(($(date +'%s') - 3600*24*272)))
ksh93
Se o ksh estiver disponível:
$ printf "%(%Y%m%d)T" "9 month ago"
Perl
Se perl estiver disponível (9 meses são aproximados com 3600 * 24 * 30 * 9):
$ perl -e 'use POSIX qw(strftime); print strftime "%Y%m01",localtime(time()- 3600*24*30*9);'
20161001
$ a=$(perl -e 'use POSIX qw(strftime); print strftime "%Y%m01",localtime(time()- 3600*24*30*9);')
Edite o arquivo
Anexe essa variável à primeira linha de file
$ sed '1s/.*/&'"$a"'/' file >file.new; mv file.new file
É isso.