diff --git a/src/paste/paste.rs b/src/paste/paste.rs index 9d46070eb..fa9d0e6c9 100644 --- a/src/paste/paste.rs +++ b/src/paste/paste.rs @@ -67,8 +67,10 @@ fn paste(filenames: Vec, serial: bool, delimiters: String) { } ) ).collect(); - let delimiters: Vec = delimiters.chars().map(|x| x.to_string()).collect(); + + let delimiters: Vec = unescape(delimiters).chars().map(|x| x.to_string()).collect(); let mut delim_count = 0; + if serial { for file in files.iter_mut() { let mut output = String::new(); @@ -116,3 +118,12 @@ fn paste(filenames: Vec, serial: bool, delimiters: String) { } } } + +// Unescape all special characters +// TODO: this will need work to conform to GNU implementation +fn unescape(s: String) -> String { + s.replace("\\n", "\n") + .replace("\\t", "\t") + .replace("\\\\", "\\") + .replace("\\", "") +}