A saída do meu comando é algo como:
1540 "A B"
6 "C"
119 "D"
A primeira coluna é sempre um número, seguido de um espaço e, em seguida, uma sequência de aspas duplas.
Meu objetivo é obter apenas a segunda coluna, como:
"A B"
"C"
"D"
Eu pretendia usar <some_command> | awk '{print $2}'
para fazer isso. Mas a questão é que alguns valores na segunda coluna contêm espaço (s), que é o delimitador padrão para awk
separar os campos. Portanto, a saída está confusa:
"A
"C"
"D"
Como obtenho o valor da segunda coluna (com aspas emparelhadas) corretamente?
awk '{$1=""; print $0}'
, mas ele ainda tem um caractere de espaço em branco à esquerda. Pode ser removido porsed '/^ //'
. No entanto, isso poderia ser feitoawk
?Respostas:
Ou use sed & regex.
fonte
<some_command> | sed 's/.* \(".*"\)/\1/'
Use
-F [field separator]
para dividir as linhas em"
s:ou para entrada do tubo
resultado:
fonte
'{print "\""$2"\""}'
"\"" + $2 + "\""
. As aspas circundantes estão indicando algo a ser acrescentado à saída, e as aspas com escape (\"
) estão sendo impressas. Para ajudar a visualizar ele, este é o que olharia como se nós queria acrescentar espaços em branco ao redor$2
em vez de aspas:'{print " "$2" "}'
. Também podemos adicionar espaçamento de formato para facilitar um pouco o grok:'{print " " $2 " "}'
Se você pudesse usar algo diferente de 'awk', tente isso em vez disso
-d é um delimitador, -f é o campo a ser cortado e com -f2- pretendemos cortar o 2º campo até o final.
fonte
-d
? Parece um pouco estranho dessa maneira.Isso deve funcionar para obter uma coluna específica da saída do comando "docker images":
Isso vai imprimir a terceira coluna
fonte
Você não precisa de awk para isso. Usar o
read
shell Bash deve ser suficiente, por exemploou:
fonte
Se você possui o GNU awk, esta é a solução que você deseja:
fonte
fonte
Então, supondo que você nomeie o script como co, digamos, faça algo assim para obter o tamanho dos arquivos (o exemplo assume que você está usando Linux, mas o script em si é independente do sistema operacional): -
ls -lh | co 5
fonte