cut existe exatamente para esse propósito. O sinal -d especifica o delimitador e -f especifica quais campos serão enviados:
cut -d: -f1 /etc/passwd
O argumento para -f pode ser algo como 1,3 para mostrar os primeiros e terceiros campos, ou 1-3 para mostrar os três primeiros; também há -b e -c flags para ler bytes e caracteres em vez de campos. Se você precisar de algo mais flexível, geralmente awk fará o truque (consulte resposta de Mateus )