2

我有一个大的日志文件,我需要从中提取文件名。

该文件如下所示:

/path/to/loremIpsumDolor.sit /more/text/here/notAlways/theSame/here
/path/to/anotherFile.ext /more/text/here/differentText/here
.... about 10 million times

我需要像这样提取文件名:

loremIpsumDolor.sit
anotherFile.ext

我认为我的第一个策略是/path/to/用''查找/替换所有内容。但我不知道如何删除空格后的所有字符。

你能帮我吗?

4

4 回答 4

5
sed 's/ .*//' file

它不再需要了。当然,转换后的输出出现在标准输出上。

于 2012-11-15T19:42:55.917 回答
2

理论上,您还可以使用awk以下方式从每一行中获取文件名:

awk '{ print $1 }' input_file.log

当然,这假设任何文件名中都没有空格。awk默认查找空格作为字段分隔符,因此上面的代码段将从您的日志文件(您的文件名)中为每一行获取第一个“字段”,并输出它。

于 2012-11-15T19:47:57.993 回答
2

将其传递给cut

cut '-d ' -f1 yourfile
于 2012-11-15T19:43:19.410 回答
0

仅限 bash 的解决方案:

while read path otherstuff; do
    echo ${path##*/}
done < filename
于 2012-11-15T22:29:20.277 回答