unix comando para imprimir até a terceira ocorrência de “/” em cada linha

4

Eu tenho um arquivo que contém dados da seguinte forma ...

/tutordashboard/manageTutorLogInStatus/?ua=TQ-AUTOCLOSE-REENTER&filterId=089089087087080&dt=1325757272
/tutordashboard/manageTutorLogInStatus/?ua=TQ-AUTOCLOSE-REENTER&filterId=089089087087080&dt=1873982869
/tutordashboard/manageTutorLogInStatus/?ua=TQ-BUTTON-DISABLED&sessionType=1&sessionId=4938718&filterId=97462&dt=1354822214604
/tutordashboard/manageTutorLogInStatus/?ua=TQ-BUTTON-DISABLED&sessionType=1&sessionId=4951063&filterId=95997&dt=1354807593071
/tutordashboard/manageTutorLogInStatus/?ua=TQ-BUTTON-DISABLED&sessionType=2&sessionId=4957338&filterId=99353&dt=1354752909284

Como posso obter a saída que imprime até a terceira ocorrência de "/" em cada linha?

    
por Lingaraj R M 07.12.2012 / 09:12

5 respostas

2
awk -F/ 'BEGIN{OFS="/";}{print $1,$2,$3}' your_file
    
por 07.12.2012 / 10:02
15

É tão simples assim - separado por '/', campos de corte 1-4:

cut -d'/' -f1-4

Exemplo:

$ echo /foo/bar/baz/extra | cut -d'/' -f1-4
/foo/bar/baz
    
por 07.12.2012 / 09:17
0
sed 's_\(/.*/.*\)/.*__' your-file.txt

Este é um exemplo:

>sed 's_\(/.*/.*\)/.*__' your-file.txt
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
    
por 07.12.2012 / 09:17
0

cut é melhor, mas com sed :

sed 's|/|\n|3;P;d'

Você pode precisar de uma nova linha literal com sed s.

    
por 04.08.2014 / 10:19
0

com perl :

$ perl -F'/' -anle 'BEGIN{$,="/"} print @{[@F[0..2]]}' file
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
    
por 04.08.2014 / 10:48

Tags