Como você está usando ~: como separador de campo, você pode verificar se o segundo campo é igual a to e imprimir o terceiro campo que é o país:
awk -F"~:" '$2 == "to" { print $3; }' file
Resultado:
Germany
Brazil
Eu quero imprimir os países que têm to após ~: .
welcome~:to~:Germany
welcome~:no please~:Italy
welcome~:to~:Brazil
welcome~:not ok~:China
Observação: não sei o que estará lá, além de " to ". Pode ser qualquer coisa e pode ser alterado (como no please , not ok ).
Eu estou tentando usar o cut, awk, sed. Mas eu sou incapaz de descobrir.
awk -F "~:" '{print $2 $NF}'
Mas eu recebo a saída como:
toGermany
no pleaseItaly
toBrazil
not okChina
Como filtrar países que não sejam to .
ATUALIZAÇÃO:
Solução alternativa: (Figurado com corte): -)
grep -v "to" |cut -d ':' -f3
Não se esqueça de sed solution:
sed -n '/~:to~:/s/.*://p'
ou mais qiuck (pode ser)
sed '/~:/{s/to~:/\n/;D}'
Tags text-processing awk