Відповіді:
sed Мабуть, найлегше і швидше, ніж awk або perl в цій обставині:
sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name
Я зазвичай використовую awkтакі речі:
cat a.file | awk -F=";" '{ print $1 }'
Це займе кожен рядок файлу і надрукує першу групу перед роздільником -F
cat.
Ось спосіб це зробити за допомогою GNU grep:
grep -Po "^[^;]+(?=;?)" filename
grep -Eo '^[^;]+;' filenameмайже виходить, він просто надрукує один символ занадто багато. grep -Eo '^[^;]+' filenameмайже також отримує його, але він також буде друкувати повні (не порожні) рядки, у яких немає жодного ;.
sed 's/;.*//'