Замена текста и дубликатов - PullRequest
1 голос
/ 09 мая 2011

У меня есть файл журнала со строками, заполненными такими вещами, как:

/home/Users/b/biaxib/is-clarithromycin-effective-against-strep.html
/home/Users/b/hihi/low-cost-biaxin-free-shipping.html
/home/Users/b/hoho/no-script-biaxin-fast-delivery.html
/home/Users/b/ihatespam/no-script-low-cost-biaxin.html

Я хочу извлечь только часть имени пользователя, а затем удалить дубликаты, так что мне остается только это:

biaxib 
hihi 
hoho
ihatespam

Набор правил:

  • Извлечь текст между "/ home / Users /" и "/ ....." в конце
  • Удалитьповторяющиеся строки после применения вышеуказанного правила
  • Сделайте это в Linux

Может кто-нибудь помочь мне с тем, как создать такой скрипт или оператор для этого?

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Предполагая, что имя пользователя всегда появляется в 4-м компоненте пути:

$ cat test.txt
/home/Users/b/biaxib/is-clarithromycin-effective-against-strep.html
/home/Users/b/hihi/low-cost-biaxin-free-shipping.html
/home/Users/b/hoho/no-script-biaxin-fast-delivery.html
/home/Users/b/ihatespam/no-script-low-cost-biaxin.

$ cat test.txt | cut -d/ -f 5 | sort | uniq
biaxib
hihi
hoho
ihatespam
0 голосов
/ 09 мая 2011
cat /path/to/your/log/file.txt | python3 -c '                                                                                                                                                                                                                                         
import sys                                                                                                                                                                                                                                                          
for line in sys.stdin.readlines():                                                                                                                                                                                                                                  
    print( line.split("/")[5] )                                                                                                                                                                                                                                     
' | sort | uniq

Возможно, в Perl или с помощью других встроенных инструментов можно достичь большей краткости (см. Другой ответ), но я лично уклоняюсь от стандартных инструментов для работы с текстом в Linux (хотя правка: cut полезна).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...