Enquanto brincava awk
, vim para executar:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Isso está gerando resultados como:
53277-rw-------
52347-rw-------
Como posso obter um espaço entre esses dois amigos de saída?
command-line
text-processing
awk
rɑːdʒɑ
fonte
fonte
ls
. Isso vai te morder pelas costas mais cedo ou mais tarde.print $5 $1
awk {'print $5 $1'} a.txt
). Eles estão perguntando como colocar um espaço entre os campos 1 e 5.Respostas:
Apenas mude a linha para
isso deve imprimir a saída com espaços.
Espero que isto ajude.
Editar:
Conforme sugerido por McNisse, você pode usar printf, o que forneceria um bom formato de saída
fonte
printf
função fornece um melhor controle, especialmente se você deseja formatar números.printf("%s\t%s\n", $5, $1)
5s
significa emawk {'printf ("%5s\t%s\n", $5, $1)'}
Outra técnica específica do awk, use o "separador de campo de saída"
A vírgula é crucial aqui.
fonte
$1
para ir para nova linhaUma maneira simples de obter guias é:
fonte
Sei que esse é um tópico antigo, mas estou aprendendo e achei essas postagens úteis. Minha melhor solução foi usar o gawk para inserir espaços entre as variáveis para você.
fonte
gawk
,,mawk
ou qualquer outroawk
, todos eles inserem espaços se você usar a vírgula, como diz esta resposta .ls -la | awk '{print $1, $9}'
. Como Muru dissegawk
não é necessário.Para colocar o espaço entre os argumentos, basta adicionar
" "
, por exemploawk {'print $5" "$1'}
.No entanto, não é recomendável analisar a saída do
ls
comando , pois não é confiável e a saída é para humanos, não para scripts. Portanto, use comandos alternativos comofind
oustat
.Aqui está um exemplo usando o GNU
stat
:que imprimirá sua saída amigável à máquina (em formato conciso), para que você possa obter exatamente o que precisa. Em seguida, use
-c
para usar um formato específico, ou useawk
,cut
ouread
para obter as colunas corretas.Verifique se
stat --help
há mais opções. Por exemplo, para imprimir o dia da modificação, verifique este exemplo .fonte
for i in ls; do $i
).