使用sed从Textfile中删除文件名

时间:2016-07-13 22:02:28

标签: bash sed

我想从文本文件中删除文件名,只将文件夹作为输出。 例如:

Creature\FrostwolfPup\FrostWolfPup_Shadow.m2
Creature\FrostwolfPup\FrostWolfPup_Fire.m2

Creature\FrostwolfPup\

仅匹配我使用[^\\]*$的文件名 现在我把它与sed放在一起,/d应该删除它

D:\filetype\core\sed.exe -n -e "/^[^\\]*$/d" D:\filetype\listfile\archive\tmp\all.txt > D:\filetype\module\model_bruteforce\tmp\folders_tmp1.txt

但是我的文件夹只有一个空文本文件作为输出而不是文本文件,所以一定是错误的。

2 个答案:

答案 0 :(得分:1)

尝试:

 sed.exe -e "s/[^\\]*$//" path/to/folders.txt 

命令s/[^\\]*$//要求sed删除行末行\之后的所有内容。

警告:由于我没有便于测试的Windows机器,我不确定反斜杠是否需要加倍,如上所示。

讨论

除非我们明确要求,否则

-n告诉sed不要打印任何内容。以下命令永远不会要求sed打印:

sed.exe -n -e "/^[^\\]*$/d"

因此,它不会产生任何输出。

答案 1 :(得分:1)

在linux上测试,而不是cygwin

sed  -r 's/[^\\]*$//g' /path/to/original/file > /path/to/new/file