Contar e listar + recursos avançados

1

Eu tenho algumas perguntas:

Eu listei o número de linhas nos arquivos em / group / book / four / word, classificados pelo número de linhas que eles contêm usando

$ wc -l /group/book/four/word/*|sort -n

... e eu tenho:

2 /group/book/four/word/wer.txt
2 /group/book/four/word/rti.txt
3 /group/book/four/word/cool.txt

Isso é o que eu queria! Perfeito.

Mas agora eu quero fazer a lista gerada conter apenas os nomes dos arquivos, por exemplo, como este

wer.txt
rti.txt
cool.txt

Como posso fazer isso usando o comando "od"?

E como posso usar "sed" para remover os números no início da linha dos resultados que obtive acima? Como posso fazer o mesmo, mas apenas para as duas primeiras linhas?

    
por Ken R 18.12.2014 / 00:37

2 respostas

0

Você obtém a lista de arquivos com a expansão do nome do caminho:

cd /group/book/four/word
echo *
# or into a file
echo * >/path/to/filelist.txt

Você pode excluir tudo em uma linha desde o início até (incluindo) o primeiro espaço (ou grupo de espaços) com este comando sed :

sed 's/^[^ ]  *//g'

Não vejo o que od tem a ver com isso.

sed pode ser limitado às duas primeiras linhas, e. por tê-lo sair na terceira linha:

sed -e 3d -e 's/^[^ ]  *//g'
    
por 18.12.2014 / 00:44
0

Eu jogaria sed diretamente após sort e teria w rite os arquivos como você deseja de uma só vez:

wc -l /group/book/four/word/*|sort -n | 
sed 'w ./not_as_yet_touched.txt
 1,2s/^[0-9 ]*//w ./first_two_lines_without_line_numbers_or_leading_spaces.txt
    s|.*/||w ./everything_up_to_first_slash_trimmed.txt'

Como escrito, sed continuará a imprimir automaticamente os resultados da execução de todos os comandos acima, mas os resultados mostrados no terminal (ou onde stdout for) refletirão fielmente o conteúdo do último arquivo. Os outros dois são w ritten em momentos diferentes durante o ciclo de linha de sed e, portanto, seu conteúdo será diferente.

Sobre od embora ... hmmm ... od não delimita os dados tanto quanto os despejam . Você pode usar od em combinação com outro filtro (como sed ) para limpar as partes da linha conforme solicitado, mas sem uma contagem de bytes específica e regular entre / caracteres , você provavelmente não terá muito uso para isso. Claro, o comando final lá em cima deve lidar com isso de qualquer maneira.

    
por 18.12.2014 / 03:57

Tags