confundido com variáveis awk e shell

3

Estou tentando executar um script que usa o awk. Não há erro, parece, mas não cria o arquivo que eu quero. Este é o script:

#!/bin/bash

echo "Number of domain:"
read number
echo "Domain name:"
read domain
more "file.txt" | awk '$2=='$domain' {print $1, "1.0"} $2!='$domain' {print $1,"-1.0"}' >"$number_domain.txt"
echo "DONE"

Basicamente, eu quero criar um documento deixando todos os $ 1 que são, e mudando $ 2, se for $ domain, escreva 1.0, mais -1.0.

Estou confuso sobre como você pode escrever o texto com "" ou "e o awk" e "".

    
por cloudy_fog 28.06.2016 / 21:19

2 respostas

4

O último item desta linha

more "file.txt" | awk '$2=='$domain' {print $1, "1.0"} $2!='$domain' {print $1,"-1.0"}' >"$number_domain.txt"

provavelmente deve ser

>"${number}_${domain}.txt"

correspondente às duas variáveis que seu script lê. Seria bom se o seu script também garantisse que as variáveis não fossem sequências vazias. Se eles estiverem vazios, então o script awk irá se comportar mal.

    
por 28.06.2016 / 21:58
2

Para usar as variáveis do shell em awk , forneça-as ao script awk usando -v awkvariable="$shellvariable" em vez de colá-las no próprio script, por exemplo

awk -v d="$domain" '$2==d {print $1, "1.0"} $2!=d {print $1,"-1.0"}'

Se o script estiver fazendo a coisa certa ou não, eu não sei, mas você pode querer usar ${domain} em vez de $domain no redirecionamento depois. E ${number} ... Não há nenhuma variável chamada number_domain no seu script.

    
por 28.06.2016 / 22:09