首页 > 解决方案 > 剥离后如何打印以特定字符串结尾的所有行?

问题描述

我想打印所有在其末尾包含此字符串的行 - /Season $N 。这里 $N 是任何可以从 0 或 01 开始的数字。最后在打印这些行之前,我想/Season $N从它的末尾剥离并删除重复项(如果有的话)(可以使用 sort -u)

猫文件.txt

SomeDir/path3/File.ext
SomeDir/Path/Season 5
SomeDir/path/Season 6
SomeDir/path/path/Season 10
SomeDir/path2/Season 19
Some Random String
SomeDir/path/path/Season 19
SomeDir/test/Season 56

预期产出

SomeDir/Path
SomeDir/path/path
SomeDir/path2
SomeDir/test

标签: awksedgrep

解决方案


这会做你想做的

cat file.txt | awk -F/ -vOFS=/ '/Season/{NF--;print}' | sort -uf

(编辑)但这更好:

awk -F/ -vOFS=/ '$NF ~ /Season [0-9]+/{NF--;print}' < file.txt | sort -fu

推荐阅读