Как я могу удалить все символы в каждой строке после первого пробела в текстовом файле?

У меня есть большой файл журнала, из которого мне нужно извлечь имена файлов.

Файл выглядит так:

/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 ответа

Решение
sed 's/ .*//' file

Это не займет больше. Преобразованный вывод появляется на стандартном выходе, конечно.

Передайте это cut:

cut '-d ' -f1 yourfile

В теории вы также можете использовать awk взять имя файла из каждой строки как:

awk '{ print $1 }' input_file.log

Это, конечно, предполагает, что ни в одном из имен файлов нет пробелов. awk по умолчанию поиск пробелов в качестве разделителей полей выполняется, поэтому приведенный выше фрагмент кода будет брать первое "поле" из вашего файла журнала (ваше имя файла) для каждой строки и выводить его.

Решение только для bash:

while read path otherstuff; do
    echo ${path##*/}
done < filename
Другие вопросы по тегам