#![allow(dead_code)] mod re; mod text; fn main() -> Result<(), Box> { let args: Vec = std::env::args().collect(); if args.len() < 4 { println!("Usage: {} ", args[0]); println!("Pass `-' as `' to read lines from stdin"); std::process::exit(1); } else { let re = re::Regex::compile(&args[2])?; let text = &args[1]; let group: usize = args[3].parse().expect("Invalid group number."); if text == "-" { text::stdin_lines(|text| -> Result { match re.exec(&text)? { Some(g) if g.len() > group => println!("{}", &g[group]), _ => (), } Ok(true) })?; } else { match re.exec(&text)? { Some(g) if g.len() > group => println!("{}", &g[group]), _ => (), } } } Ok(()) }