Я не уверен, почему вы считаете, что использование регулярного выражения является решением, но если это не является строгим требованием, вы можете легко выполнить это с помощьюawk
:
awk -F'_' '{print $1}' /path/to/file
С помощью gawk вы можете перезаписать файл на месте:
gawk -i inplace -F'_' '{print $1}' /path/to/file
Или иначе с временным файлом:
awk -F'_' '{print $1}' /path/to/file > /path/to/temp_file && mv /path/to/temp_file /path/to/file
Если вы действительно хотите, вы можете добавить регулярное выражение:
awk -F'_' '/.*/{print $1}' /path/to/file
Но в этом нет смысла.
В качестве альтернативы вы можете использовать sed
в сочетании с регулярным выражением:
sed -e 's/\(.*\)_.*/\1/g' /path/to/file