Команда 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=?хорошо работает.
Уильям Перселл

Ответы:



15

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

cut -d'/' -f1-4

Пример:

$ echo /foo/bar/baz/extra | cut -d'/' -f1-4
/foo/bar/baz


0

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

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

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


0

С perl:

$ perl -F'/' -anle 'BEGIN{$,="/"} print @{[@F[0..2]]}' file
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
/tutordashboard/manageTutorLogInStatus
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.