os primeiros cinco caracteres

4

Eu preciso copiar os primeiros cinco caracteres de um arquivo de saída, 25 linhas no total, e copiar essa saída para um arquivo. também pode ser bom remover entradas em branco ou nulas na saída.

    
por user177073 28.07.2013 / 21:59

4 respostas

3

head pode ser útil aqui:

   -c, --bytes=[-]K
          print the first K bytes of each file; with the leading '-', print all but the last K bytes of each file
    
por 28.07.2013 / 22:01
2

cut -c5 corta os primeiros 5 caracteres de cada linha na entrada. Se você quiser restringir o número de linhas para 25, use head -n25 :

cut -c5 file | head -n25
    
por 28.07.2013 / 22:03
2

Você pode usar o seguinte comando sed :

sed                         \
  -e 's/\(^\w\{5\}\).*//' \
  -e '26,$d'                \
  -e '/^$/d'                \
  input_file > output_file

A primeira parte corresponde a cinco caracteres no começo da linha, imprime-os e descarta o resto. A segunda parte garante que apenas as primeiras 25 linhas são impressas. E a última parte remove linhas vazias.

    
por 29.07.2013 / 01:45
1
cat inputfile | head -c 5 > outputfile

Isso deve redirecionar a saída para o arquivo.

Se você deseja remover os espaços em branco, filtre o conteúdo do arquivo, ou seja, remova os espaços antes de extrair os cinco primeiros caracteres.

cat inputfile | tr -d ' ' | head -c 5 > outputfile

Você também pode usar o seguinte formato de tr para obter o mesmo efeito.

cat inputfile | tr -d [:space:] | head -c 5 > outputfile

tr -d [:space:] remove todos os espaços do texto canalizado para este comando.

Siga a solução acima se quiser o truncamento apenas para os 5 primeiros caracteres do arquivo.

Agora, se você deseja fazer isso para cada linha do seu arquivo, siga este:

cat inputfile | sed -e 's/ //g' | awk '{print substr($0,0,5)}' > outputfile

ou

sed -e 's/ //g' < inputfile | awk '{print substr($0,0,5)}' > outputfile

Explicação: sed -e 's/ //g' remove todos os espaços e awk '{print substr($0,0,5)}' imprime os primeiros 5 caracteres de cada linha.

    
por 29.07.2013 / 08:32