如何删除文本文件中第一个空格后每行中的所有字符?

时间:2012-11-15 19:41:19

标签: regex string bash shell text-manipulation

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

该文件如下所示:

/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 个答案:

答案 0 :(得分:5)

sed 's/ .*//' file

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

答案 1 :(得分:2)

将其传递给cut

cut '-d ' -f1 yourfile

答案 2 :(得分:2)

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

awk '{ print $1 }' input_file.log

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

答案 3 :(得分:0)

仅限bash的解决方案:

while read path otherstuff; do
    echo ${path##*/}
done < filename