Eu tenho saída que se parece com isso:
"vancouver/news/vancouver-voices": {
"status": 0,
"time": 0,
"timestamp": 1371298701
},
"vancouver/news/vancouvers-march-second-annual-success": {
"status": 0,
"time": 0,
"timestamp": 1371298701
}
Preciso extrair apenas os URLs parciais ( vancouver/news/vancouvers-march-second-annual-success and vancouver/news/vancouver-voices
por exemplo)
Basicamente, estou chamando um comando via bash e depois canalizando-o para grep awk ou sed
Se eu usar grep ( | grep -o '".*": {'
), posso me aproximar. Acabo com saída como:
"vancouver/news/vancouver-voices": {
"vancouver/news/vancouvers-march-second-annual-success": {
Eu suspeito que eu preciso usar sed ou awk embora. Eu tentei várias coisas, mas acho que preciso escapar de alguns dos personagens especiais. Por exemplo, eu tentei | awk '\"(.*)\": {' --output='$1
', mas vomita por causa das barras invertidas.
Qualquer guru sed ou awk por aí pode me dar uma dica de como posso escapar adequadamente dos personagens especiais?
Respostas:
Resultado
No entanto, isso seria melhor feito usando jq
fonte
Solução com
sed
:grep
+cut
:fonte
Você ainda pode usar o grep:
rendimentos:
Ele procura por uma sequência inicial de caracteres não ", não / /, seguida por uma ou mais sequências que consistem em uma barra seguida pelo mesmo tipo de sequência que a inicial. Também é possível usar uma classe de caracteres alfanuméricos mais traço para selecione os componentes de URL.
fonte