Usar cat -v
para transformar caracteres CR em sequências ^M
literais parece fundamentalmente feio para mim - se você precisar remover as terminações de linha do DOS, use dos2unix
, tr
ou sed 's/\r$//
'
Se você insistir em usar sed, então sugiro que você imprima os bits que você faz deseja, em vez de tentar excluir todos os bits aleatórios que você não deseja - por exemplo
$ sed -rn -e 's/\"//g' -e 's/(.*): (.*)\r//p' QueryR | paste -d '' - -
281952,Flash 11.2 No Longer Supported by Google Play
281993,Netbeans won't open in Ubuntu
Você pode adotar a opção de extração de valores-chave combinando zero ou mais aspas em cada extremidade da sequência de valores
$ sed -rn 's/(.*): \"*([^"]*)\"*\r//p' QueryR | paste -d '' - -
281952,Flash 11.2 No Longer Supported by Google Play
281993,Netbeans won't open in Ubuntu
Você pode ter realmente fantasia e emular o paste
em sed
unindo pares de linhas na ,\r$
final e, em seguida, os pares de chave-valor coincidem ( g
) e não avidamente
$ sed -rn '/,\r$/ {N; s/([^:]*): \"*([^:"]*)\"*\r\n?//gp}' QueryR
281952,Flash 11.2 No Longer Supported by Google Play
281993,Netbeans won't open in Ubuntu
(Pessoalmente, eu favoreceria a abordagem do KISS e usaria a primeira).
FWIW, como sua entrada parece estar com o JSON com as últimas citações, sugiro instalar um analisador JSON adequado, como jq
sudo apt-get install jq
Você pode fazer algo como
$ sed -e 's/["]["]/"/g' -e 's/"{/{/' -e 's/}"/}/' QueryR | jq '.id, .title' | paste -d, - -
281952,"Flash 11.2 No Longer Supported by Google Play"
281993,"Netbeans won't open in Ubuntu"
que remove as aspas supérfluas e depois usa jq
para extrair os campos de interesse - note que jq
parece lidar com as terminações de linha no estilo DOS, portanto não há necessidade de tomar medidas especiais para removê-las. / p>
Altere para jq '.[]'
para despejar todos os pares de valores de atributo.
Crédito para inspiração e sintaxe jq
básica tirada de Superando novas linhas com grep -o