我有一个很大的日志文件,需要从中提取文件名。
文件如下:
/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/
。但我被如何删除空格后的所有字符所困扰。
你能帮忙吗?
sed 's/ .*//' file
不需要更多时间。转换后的输出当然会出现在标准输出上。
理论上,您也可以使用awk
从每一行获取文件名,如下所示:
awk '{ print $1 }' input_file.log
当然,这是假设在任何文件名中都没有空格。awk
默认查找空白作为字段分隔符,因此上面的代码段将为每一行从日志文件(文件名)中获取第一个"字段",并将其输出
将其传递给cut
:
cut '-d ' -f1 yourfile
仅限bash的解决方案:
while read path otherstuff; do
echo ${path##*/}
done < filename