Como posso extrair dados desta linha?

0
xyz /mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ffx7sljc/v/2/flavorId/0_,n6h1xlhl,ea3anltg,jfs8boo9,w2v1vsk2,ze8e1q2s,to8w2p18,/forceproxy/true/name/new

nesta linha esta parte ,n6h1xlhl,ea3anltg,jfs8boo9,w2v1vsk2,ze8e1q2s,to8w2p18, é variável então pode ser mais ou menos número de dados entre os comas nas partes xyz /mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ tudo é constante exceto o valor numérico 1926081 ou 192608100 pode aumentar ou diminuir. /forceproxy/true/name/new também é uma constante e não muda

A saída que quero é tal que apenas o último valor do padrão ,n6h1xlhl,ea3anltg,jfs8boo9,w2v1vsk2,ze8e1q2s,to8w2p18, is included and rest is deleted including any comma and the initial xyz '

então deve ser: /mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ffx7sljc/v/2/flavorId/0_to8w2p18/forceproxy/true/name/new

    
por munish 03.04.2016 / 21:10

3 respostas

1

se munish.txt contiver os dados de amostra fornecidos, então:

$ sed -e 's/^[^ ]* //; s/,.*,\([^,]*\),//' munish.txt
/mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ffx7sljc/v/2/flavorId/0_to8w2p18/forceproxy/true/name/new

Este script sed exclui tudo, incluindo o primeiro espaço em uma linha e tudo, desde o primeiro , até o segundo e último , . Também exclui o% final,.

    
por 04.04.2016 / 05:54
2
awk 'BEGIN {FS="[, ]"} {print $2$(NF-1)$NF}' input_filename
    
por 03.04.2016 / 21:20
0

Eu inventei uma maneira estranha de fazer isso não parece bom onde variável v contém toda a linha

echo $(echo ${v%%,*})$(echo ${v} | grep -Po '.*,\K.*(?=,)')$(echo ${v##*,}) | sed 's/xyz\s//p'
    
por 03.04.2016 / 21:21

Tags