Как отфильтровать наборы путей, чтобы избежать повторения их с помощью AWK? - PullRequest
0 голосов
/ 09 января 2019

Есть ли способ получить последний полный путь из списка и избежать средней части и просто получить длинный путь вместо начало и центральная часть?

Введите:

Data
Output
Output\Results
Output\Results\head
Output\Results\head\main
Output\Results\footer

Выход:

Data
Output\Results\head\main
Output\Results\footer

1 Ответ

0 голосов
/ 09 января 2019

Как отметил @tshiono в комментарии выше, ваши требования несколько расплывчаты ... если порядок важен, мое решение не будет работать для вас.

$ cat file
Data
Output
Output\Results
Output\Results\head
Output\Results\head\main\index.html
Output\Results\footer

И немного неловко awk:

$ <file LC_ALL=C sort | awk 'BEGIN{x=""} {split( $0, a, "\\" );b=a[1]; for(i=2; i<=length(a) ; i++) {if(a[i]!~/\./){b=b "\\" a[i]};$0=b}; ; if(!index($0,x)){print x};x=$0}END{print x'
Data
Output\Results\footer
Output\Results\head\main

Редактировать 1: Измененный ввод значительно упрощает awk (пока оригинал все еще работает):

<file LC_ALL=C sort | awk 'BEGIN{x=""} {if(!index($0,x)){print x};x=$0}END{print x}'
Data
Output\Results\footer
Output\Results\head\main
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...