基于 sed 和 awk 命令过滤列表,多个定界符

Filtering a list based on sed and awk command, multiple delimiter

我在这个问题上需要帮助。 我在一个文件夹中有一些文件,我想列出它,但我只想列出主要的 Cours-name。

-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Bauch-Beine-Po 01.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Bauch-Beine-Po 02.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Bauch-Beine-Po 03.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Bauch-Beine-Po 04.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 05.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 06.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 07.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 08.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 09.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 10.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Bauch-Beine-Po 11.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Entspannung.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 01.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 02.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 03.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 04.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 05.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 06.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:35 'Gymnastik - Muskeln wie Stahl 07.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - RückenFit 01.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - RückenFit 02.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - RückenFit 03.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - RückenFit 04.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - RückenFit 05.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Stretching 01.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Stretching 02.mp4'
-r--r----- 1 saeid azubi 0 Jun 10 14:34 'Gymnastik - Stretching 03.mp4'

这里

输出应该是这样的:

Bauch-Beine-Po

Entspannung

Muskeln wie Stahl

RückenFit

Stretching

我试过这段代码,但它不是我想要的:

ls -l | awk -F'[ .$]' '{print  }' | uniq 

感谢您的提前帮助

这就是我想要的

ls -lrtA |cut -f11-13 -d ' '| sed  's/[0-9]*\.[^.]*$//'| sort | uniq

您也可以使用 awk。

使用 - 作为字段分隔符并删除可选的 space 和数字后跟最后一个字段的扩展名。

例如

ls -A1 | awk -F ' - ' '{sub(/( [0-9]+)?\.[^.]+$/, "", $NF);print $NF}' | sort | uniq

示例代码中:

  • $NF是最后一个字段,先用sub改,然后打印
  • 模式 ( [0-9]+)?\.[^.]+$ 匹配一个可选的 space 和 1+ 个数字,后跟一个点和除点以外的任何字符,直到字符串结尾