每行提取多个字符串,由文件中的特殊字符分隔

时间:2013-07-11 12:52:17

标签: unix sed extract

我在文本文件中得到一个包含文件名的文件(FILEMANES.txt)。每行包含一个或多个由#。

分隔的文件名
#filename1#
#filename2#filename3#filename4#
#filename5#filename6#
....

在for循环中浏览目录内容,我需要比较目录中找到的每个文件名和每个找到的filenameX FILEMANES.txt

我想我可以用sed和/或awk来做,但我想念一些技能

如果有人可以提供帮助,那就太棒了

感谢的

1 个答案:

答案 0 :(得分:1)

将每个文件与每个名称进行比较会非常慢。让工具完成一些工作:

for file in * ; do
    grep -o "#$file#" FILENAMES.txt
done

或者,没有循环:

ls | sed 's/^\|$/#/g'| grep -oFf- FILENAMES.txt

请注意,如果文件名包含空格和其他特殊字符,则解决方案会更复杂。