Passa a variável Shell para awk [duplicado]

1

Eu percebo que isso foi perguntado muitas vezes e muitas das respostas foram bem escritas, mas estou perdendo alguma coisa com minha pequena tarefa. Tentando passar uma variável Shell (um argumento neste caso) para awk para pegar uma seção de um arquivo de texto.

cat ~/work/junk.txt 

[Section1]
innerline1
innerline2
innerline3

[Section2]
innerline4
innerline5
innerline6

Estou tentando fazer um script para usar o argumento fornecido ($ 1) para passar como padrão para corresponder ao awk.

#!/bin/bash

echo pattern is $1

# record separator (RS) is the next blank line
awk -v var="$1" {print '/var/'} RS= ~/work/junk.txt

Se $ 1 é o argumento fornecido como "Section1", espero que esta saída:

[Section1]
innerline1
innerline2
innerline3

Eu acho que estou perto, mas muito distante.

Obrigado por qualquer ideia.

    
por user47812 23.11.2016 / 19:22

1 resposta

2
#!/bin/bash

echo "Pattern is ${1}"

awk -F'=' -v section="[$1]" -v f=0 '$0==section {f=1}  $0=="" {f=0} f==1 {print}' input
    
por 23.11.2016 / 19:38