Basta adicionar o número da linha antes: sed '<line number>s/<search pattern>/<replacement string>/ .
$ sed '1s/state0/XXXX/' file
id311 vmName1 XXXX
id312 vmName2 state0
id313 vmName3 state0
Como você deseja editar no lugar, diga:
sed -i.bak '1s/state0/XXXX/' file
Observe que eu uso .bak após o sinalizador -i . Isso executará a alteração no próprio file , mas também criará um arquivo de backup file.bak com o conteúdo atual de file antes da alteração.
Para um número de linha variável, use a variável normalmente, bem como aspas duplas para que ela seja expandida:
sed -i.bak "${lineNumber}s/state0/XXXX/" file