Portanto, se você quiser imprimir campos do arquivo como separados por nova linha, se começar com $ , poderá fazer:
awk '{for(i=1;i<=NF;i++){if($i~/^$/){printf "%s\n",substr($i,2)}}}' file.txt
Formulário expandido:
awk '{
for (i=1;i<=NF;i++)
{ if($i~/^$/)
{ printf "%s\n",substr($i,2) }
}
}' file.txt
Aqui estamos iterando sobre os campos ( for (i=1;i<=NF;i++) ), se o campo começar com $ ( if($i~/^$/) ), depois imprimindo com uma nova linha inicial a partir do segundo caractere ( printf "%s\n",substr($i,2) ).
Por outro lado, se o número de campos for fixo e não muitos, então sed também é uma opção viável, assumindo aqui dois campos:
sed -nr 's/^$([^[:blank:]]+)[[:blank:]]+$([^[:blank:]]+)$/\n/p' file.txt
Correspondendo $ no início de cada campo separado de espaço em branco, capturando o campo ( ([^[:blank:]]+) ), em seguida, na substituição, defina os campos como separados por nova linha ( 1\n ).
Exemplo:
$ cat file.txt
$PILOT_FIRSTNAME $PILOT_LASTNAME
$FOO $BAR
PILOT_FOO PILOT_BAR
$ awk '{for(i=1;i<=NF;i++){if($i~/^$/){printf "%s\n",substr($i,2)}}}' file.txt
PILOT_FIRSTNAME
PILOT_LASTNAME
FOO
BAR
$ sed -nr 's/^$([^[:blank:]]+)[[:blank:]]+$([^[:blank:]]+)$/\n/p' file.txt
PILOT_FIRSTNAME
PILOT_LASTNAME
FOO
BAR