从文本文件中获取文件夹名称

从文本文件中获取文件夹名称

我有一个文本文件中的文件列表。如何从此文本文件中仅获取文件夹名称? (同名文件夹将写入一次)

/lib/i386-linux-gnu/libwrap.so.0.7.6     
/lib/i386-linux-gnu/libbsd.so.0  
/lib/i386-linux-gnu/libdbus-1.so.3.19.4  
/lib/i386-linux-gnu/libexpat.so.1.6.7   
/usr/bin/rakconvert  
/usr/bin/python-config  
/usr/bin/winecpp  
/usr/bin/wine  
/usr/bin/regedit  
/usr/bin/pycompile  
/usr/bin/msiexec  

该文件的内容1.txt。如果我想要的输出:

/lib/i386-linux-gnu/  
/usr/bin

我所做的所有搜索都是关于将文件列表发送到文件。 “cat,dirname”等。我没有在这里添加它们,因为我使用了很多代码。

抱歉我的问题没有问清楚。谢谢

答案1

将此视为纯粹的文本处理问题(即忽略 Unix 文件名可以包含换行符的事实,这就是您通常不会在文本文件中存储路径名的原因,除非您知道它们是正常的),我们可以删除最后一个/字符之后的任何内容在每一行上并通过获得独特的结果

$ sed 's,/[^/]*$,,' 1.txt | sort -u
/lib/i386-linux-gnu
/usr/bin

sed表达式s,/[^/]*$,,(也可以写成s/\/[^/]*$//)将删除任何匹配的内容/[^/]*$,即斜杠后跟任意数量的非斜杠字符(直到行尾)。

最后对sort -u结果进行排序,仅保留唯一的条目。如果数据已经排序,您可以使用uniq它。

相关内容