Команда unix для печати до 3-го вхождения «/» в каждой строке

4

У меня один файл содержит данные следующим образом ...

/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

Как я могу получить вывод, который печатает до 3-го вхождения "/" в каждой строке?

Лингараж Р.М.
источник
4
Что-нибудь, что вы пробовали?
Если ваш вклад является репрезентативным, вероятно, было бы лучше вместо этого напечатать все до первого ?, и это awk '{print $1}' FS=?хорошо работает.
Уильям Перселл

Ответы:

2
awk -F/ 'BEGIN{OFS="/";}{print $1,$2,$3}' your_file
Виджай
источник
15

Это так же просто, как это - разделенные символом '/', вырезать поля 1-4:

cut -d'/' -f1-4

Пример:

$ echo /foo/bar/baz/extra | cut -d'/' -f1-4
/foo/bar/baz
Volker Siegel
источник
0
sed 's_\(/.*/.*\)/.*_\1_' your-file.txt

Это пример:

>sed 's_\(/.*/.*\)/.*_\1_' your-file.txt
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
Сергей Куренков
источник
0

cutлучше, но с sed:

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

Вам может понадобиться буквальный перевод строки с некоторыми seds, хотя.

mikeserv
источник
0

С perl:

$ perl -F'/' -anle 'BEGIN{$,="/"} print @{[@F[0..2]]}' file
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
cuonglm
источник