Como combinar texto entre uma string e um espaço

1

Eu tenho um script simples que lê linhas de um arquivo de texto da seguinte forma:

#!/bin/bash
FILE=$1
while read line; do

done < $FILE

Eu gostaria de combinar texto entre a string "-type" e um espaço, então na minha linha eu tenho:

 random text -type 53 random text

Eu só quero extrair "53" e atribuí-lo à variável type_number. Quais dessas ferramentas cortar, sed, grep ou awk seriam apropriadas para essa tarefa?

    
por tim 05.12.2016 / 08:40

3 respostas

1
using sed -

echo "abcd 1234 -type 53 efgh 5678" |sed -r 's/^.*-type\s+([0-9]+).*$//'
53

substitua a linha usada aqui por $ line e atribua a uma variável

    
por 05.12.2016 / 12:39
0
#!/bin/bash
FILE=$1
while read line; do
type_number='echo $line |awk '{for(i=1;i<=NF;i++){if($i=="-type")print $(i+1)}}''
#here you can use your $type_number
done < $FILE
    
por 05.12.2016 / 08:47
0
#!/bin/bash
FILE=$1
while read line; do
number=$(echo "${line}" | awk 'gsub(" *","")$0~/type/{getline;print;exit}' RS=" ")
echo "${number}"
done < ${FILE}
    
por 05.12.2016 / 10:17