我有一个包含很多链接的文件,我需要 bash 脚本来提取所有以.pdf
格式结尾的文件的名称?
答案1
您可以使用以下方式提取名称
grep -o '[^/]*\.pdf' example
[^/]
匹配任何非/
[^/]*\.pdf
是一个(可能为空的)非字符序列/
,后跟字符.pdf
(句点前的反斜杠使其成为文字 - 否则.
在正则表达式中匹配任何字符)- grep
-o
标志输出每个匹配的部分,每行一个匹配
要删除重复项,请通过sort
和uniq
或sort -u
grep -o '[^/]*\.pdf' example | sort -u
答案2
- 这里
cut
将用空格分割字符串,f1 表示第一个字段 - 现在
rev
将反转字符串,并使用 '/' 分割字符串,这cut
将为-f1
我们提供 URL 的最后一部分,但顺序相反。所以我们需要再次反转它!
cat filename | cut -d' ' -f1 | rev | cut -d'/' -f1 | rev
答案3
basename /usr/bin/poop.txt
会给你
便便.txt
我从 /usr/bin 生成了一个 testy.txt 文件,其中包含其所有路径/文件,并编辑了一些名称以 .pdf 结尾。
所以基本上 testy.txt 看起来像这样:
/usr/bin/aa-enabled
/usr/bin/aconnect.pdf
/usr/bin/alsaucm
/usr/bin/xargs.pdf
/usr/bin/xcursogen
/usr/bin/znew.pdf
您可以使用 basename 在 grepping pdf 后仅提取文件中的名称。
basename -a $(grep "\\.pdf" testy.file)
aconnect.pdf
xargs.pdf
znew.pdf
-a 允许多个参数