Как я могу удалить все символы в каждой строке после первого пробела в текстовом файле?
У меня есть большой файл журнала, из которого мне нужно извлечь имена файлов.
Файл выглядит так:
/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
Это не займет больше. Преобразованный вывод появляется на стандартном выходе, конечно.
В теории вы также можете использовать awk
взять имя файла из каждой строки как:
awk '{ print $1 }' input_file.log
Это, конечно, предполагает, что ни в одном из имен файлов нет пробелов. awk
по умолчанию поиск пробелов в качестве разделителей полей выполняется, поэтому приведенный выше фрагмент кода будет брать первое "поле" из вашего файла журнала (ваше имя файла) для каждой строки и выводить его.
Решение только для bash:
while read path otherstuff; do
echo ${path##*/}
done < filename