Usando grep + sed
Isso analisará o conteúdo dessas duas strings:
$ grep -o '".*"' somefile | sed 's/"//g'
arch
arch2
O texto acima procura por uma string que corresponda ao padrão ".*"
. Isso corresponderá a qualquer coisa que ocorra entre aspas duplas. Portanto, grep
retornará esses tipos de valores:
"arch"
"arch2"
O canal para sed
removerá as aspas duplas dessas strings, fornecendo as strings que você está procurando. A notação sed 's/"//g'
está instruindo sed
para fazer uma pesquisa e substituir todas as ocorrências de aspas duplas, substituindo-as por nada, s/"//g
. O comando s/find/replace/g
é o que está acontecendo lá, e o trailing g
to search diz para fazer isso globalmente em toda a string que é dada.
Usando apenas sed
Você também pode usar sed
para cortar as aspas duplas iniciais, manter o que há entre elas e cortar a cotação restante + depois de tudo:
$ sed 's/^"\(.*\)".*//' a
arch
arch2
Outros métodos
$ grep -o '".*"' somefile | tr -d '"'
arch
arch2
O comando tr
pode ser usado para excluir caracteres. Neste caso, está excluindo as aspas duplas.
$ grep -oP '(?<=").*(?=")' somefile
arch
arch2
Usando o recurso PCRE de grep
, você pode procurar por substrings que começam com aspas duplas ou terminar com aspas duplas e relatar apenas a substring.