unix - 如何grep(不)匹配每行末尾的特殊字符“/”(无引号)
问题描述
我想通过一个大文件来查找不以“/”结尾的行(无引号)。这是一个示例文件:
Folder1/clicker7Mac/
Folder1/clicker7Mac/clicker7.17.0_Mac/Resources/
Folder2/
Folder2/file of interest1.pdf
Folder2/Grades/
Folder2/Grades/another file of interest.pdf
Folder2/Grades/other files with unknown but not-slash extension
Folder2/Final_exam/
Folder2/Final_exam/a 3rd file.pdf
Folder2/Grades/an excel file of interest.xlsx
Folder2/Grades/Package_for_someone/
Folder2/HW/
Folder2/HW/HW1/
我只想要以文件结尾的行,而不是目录路径的行。即在这里我想要输出:
Folder2/file of interest1.pdf
Folder2/Grades/another file of interest.pdf
Folder2/Grades/other files with unknown but not-slash extension
Folder2/Final_exam/a 3rd file.pdf
Folder2/Grades/an excel file of interest.xlsx
我搜索了堆栈交换和 unix 论坛并尝试了以下方法(注意我已经反转了搜索,因为它更容易测试):
grep '.*/' testfile
grep '\w*/\b' testfile
(greps 所有单词和斜杠,也获取文件;grep -v 什么都不做)
grep "[a-z.0-9]"'/\b' testfile
(所有斜线之前的最后一个字符;grep -v 什么都不产生)
grep '\l*/\b' testfile
grep '\>/' testfile
(所有斜线(不仅仅是结束斜线); grep -v 没有任何结果)
grep -F '/\b' testfile
(fgrep 或 grep -F 视为文字字符串,不产生任何结果;grep -v 产生一切)
请问有什么解决办法吗?
解决方案
grep -v '/$' file
或者
grep '[^/]$' file
输出:
文件夹2/感兴趣的文件1.pdf Folder2/Grades/另一个感兴趣的文件.pdf Folder2/Grades/其他具有未知但非斜杠扩展名的文件 Folder2/Final_exam/第三个文件.pdf Folder2/Grades/感兴趣的excel文件.xlsx
请参阅:man grep
和堆栈溢出正则表达式常见问题解答
推荐阅读
- python - 根据我在 python 中使用 to_html 发送的电子邮件中的条件为行或字段设置颜色格式
- java - 创建一个加密的 voip 应用程序
- sql-server - SQL Server 停止在 sql server 2014 中发送数据库邮件
- python - Sqlalchemy和python的受限关键字
- powershell - 在 TFVC for TFS 2017 中签入代码时用于关联工作项的命令是什么?
- python - 先知.perdict(future) ValueError 不能传递任何大小的future(df)
- python - python链接列表首先删除
- r - 为列表中的数据框编号(即,为每个数据框创建一个带有单独编号的列)
- php - 如何计算负/正时间和大于 24:00?
- java - 首次在新环境中运行 Spring Boot 应用程序时如何运行 data.sql 脚本?