Cortando os primeiros 16 caracteres usando o SED

1

Estou usando um comando SED para tentar cortar as linhas. No momento, estou tentando obter os primeiros 16 caracteres para cortar de um arquivo de texto (linha por linha)

Linhas de exemplo:

psinfo -s -c   psinfo -s -c  ALASTAIR-MUNRO    
psinfo -s -c   psinfo -s -c  ANDREWATKINSON    
psinfo -s -c   psinfo -s -c  ANDY-KAYE         
psinfo -s -c   psinfo -s -c  ANDYTURNER        
psinfo -s -c   psinfo -s -c  CAD-SPARE2        
psinfo -s -c   psinfo -s -c  CAD-SPARE3        
psinfo -s -c   psinfo -s -c  CADTEMP1          
psinfo -s -c   psinfo -s -c  CARLWALKER        
psinfo -s -c   psinfo -s -c  CAROLEGIBBONS     
psinfo -s -c   psinfo -s -c  CHRIS-SMITH 

Estou tentando cortar o primeiro lote de PSinfo -s -c out e convertê-lo em um texto separado

Isso é o que eu tenho que não está funcionando (abaixo) Alguma idéia?

BIN\sed -e 's/^\(.\{60\}\).*//' Working\Hostnames3.txt > Working\Hostnames4.txt
    
por Kyle Crowther 21.04.2017 / 13:52

3 respostas

3

Um método fácil e econômico para realizar isso é:

cut -c 16- hostname.txt > altered_hostname.txt

A seção mágica deste simples comando cut está nessas duas opções:

-c,   --characters=LIST
       select only these characters
 N-    from N'th byte, character or field, to end of line
    
por andrew.46 21.04.2017 / 14:45
0

Você pode tentar este comando (awk)

awk '{sub(".*"  FS,"")}1' Working/Hostnames3.txt > Working/Hostnames4.txt

para remover os três primeiros campos do arquivo de entrada (pelo meu entendimento, isso é o que você precisa) P.S. Aqui está um exemplo de execução do script acima:

# cat in
a b c d
aa bb cc dd
a1 b1 c1 d1

# awk '{sub(".*"  FS,"")}1' in >out
# cat out
d
dd
d1
    
por Romeo Ninov 21.04.2017 / 14:17
0

Outra abordagem: obtenha o último psinfo .... com grep:

grep -Po '.*\Kpsinfo.*'
    
por JJoao 25.04.2017 / 12:27