grep – удаление текста после токена разделителя

У меня есть файл, в котором мне нужно удалить все после первого ; на каждой линии.

Итак, файл вроде этого:

 sdfsdsdf; fsdfsddf;sdfsd; 

Это приведет к следующему:

 sdfsdsdf fsdfsddf 

Я посмотрел на grep и sed . Я был бы признателен за ответ, включающий любую из этих команд.

sed , вероятно, проще всего и быстрее, чем awk или perl в этом случае:

 sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name 

другой вариант – использовать команду cut

 cat a.file | cut -d';' -f1 

Обычно я использую awk для таких вещей:

cat a.file | awk -F=";" '{ print $1 }'

Это займет каждую строку файла и распечатает первую группу перед разделителем -F

Вот как это сделать, используя GNU grep :

 grep -Po "^[^;]+(?=;?)" filename