# delete newlines printf "a\nb\nc\nd\ne\nf" | sed -n -e 'l' printf "a\nb\nc\nd\ne\nf" | sed -E -e :a -e '$!N; s/\n//g; ta' printf "a\n\nb" | sed -n -e 'l' printf "a\n\nb" | sed -E -e :a -e '$!N; s/\n//g; ta' | sed -n -e 'l' printf "a\n\nb" | sed -E -e :a -e '$!N; s/\n$//g; ta' | sed -n -e 'l' printf "a\n\n\n\n\n\nb" | sed -E -e :a -e '$!N; s/\n$//g; ta' | sed -n -e 'l' # delete carriage returns printf "he\r\rllo\n" | sed -n -e 'l' printf "he\r\rllo\n" | sed -e s/$'\r'//g | sed -n -e 'l' printf "he\r\rllo\n" | sed -e s/$'\r\r'/$'\r'/g | sed -n -e 'l' CR=$'\r' printf "hello\r\r\n" | sed "s/$CR$CR$/$CR/g" | sed -n -e 'l' # alternatives printf "a\nb\nc\nd\ne\nf" | tr -d '\n' # cf. http://linux.dsplabs.com.au/rmnl-remove-new-line-characters-tr-awk-perl-sed-c-cpp-bash-python-xargs-ghc-ghci-haskell-sam-ssam-p65/ while read -d $'\n'; do echo -n "${REPLY} "; done < <((printf "a\nb\nc\nd\ne\nf")) while read -d $'\n'; do printf "%s " "${REPLY}"; done < <((printf "a\nb\nc\nd\ne\nf")) xargs echo < <((printf "a\nb\nc\nd\ne\nf")) xargs printf "%s " < <((printf "a\nb\nc\nd\ne\nf")) printf "a\nb\nc\nd\ne\nf" | /usr/bin/paste -s -d ' ' - # cf. man paste # delete newlines in-place (also see below) vim -e -s +':%j' +'w!' +'qa!' /path/to/file # insert newlines again printf "%s\n" "hello" | sed -e s/l/$'\\\n'/g | sed -n -e 'l' printf "%s\n" "hello" | sed -E s/\(l\)/\\1$'\\\n'/g | sed -n -e 'l' #----------------------------------------------------------- # converting between \n and \n\r # cf. also flip, http://ccrma.stanford.edu/~craig/utility/flip/ and # http://codesnippets.joyent.com/posts/show/1660 # convert \n into \r\n printf "a\nb\nc\nd\ne\nf\n" printf "a\nb\nc\nd\ne\nf\n" | sed -n -e 'l' printf "a\nb\nc\nd\ne\nf\n" | sed s/$/$'\r'/ printf "a\nb\nc\nd\ne\nf\n" | sed s/$/$'\r'/ | sed -n -e 'l' printf "a\nb\n\n\n\n\n\n\n\n\n\n\nc\nd\ne\nf\n" | sed -E -e :a -e '$!N; s/\n$//g; ta' | sed -E s/$/$'\r'/ | sed -n -e 'l' while read -d $'\n'; do printf "%s\r\n" "${REPLY}"; done < <((printf "a\nb\nc\nd\ne\nf\n")) while read -d $'\n'; do printf "%s\r\n" "${REPLY}"; done < <((printf "a\nb\nc\nd\ne\nf\n")) | sed -n -e 'l' # convert \r\n into \n printf "a\r\nb\r\nc\r\nd\r\ne\r\nf\r\n" printf "a\r\nb\r\nc\r\nd\r\ne\r\nf\r\n" | sed -n -e 'l' printf "a\r\nb\r\nc\r\nd\r\ne\r\nf\r\n" | sed s/$'\r'$// printf "a\r\nb\r\nc\r\nd\r\ne\r\nf\r\n" | sed s/$'\r'$// | sed -n -e 'l' printf "a\r\nb\r\r\r\r\r\r\r\r\r\r\nc\r\nd\r\ne\r\nf\r\n" | sed s/$'\r'*$// | sed -n -e 'l' printf "a\r\nb\r\r\r\r\r\r\r\r\r\r\nc\r\nd\r\ne\r\nf\r\n" | sed -E s/$'\r'+$// | sed -n -e 'l' # lacks a terminating \n though while read -d $'\r'; do printf "%s" "${REPLY}"; done < <((printf "a\r\nb\r\nc\r\nd\r\ne\r\nf\r\n")) while read -d $'\r'; do printf "%s" "${REPLY}"; done < <((printf "a\r\nb\r\nc\r\nd\r\ne\r\nf\r\n")) | sed -n -e 'l' #--------------------------------------- # create test files testfile="${HOME}/Desktop/testfile.txt" output="${HOME}/Desktop/output.txt" function createfiles() { testfile="${HOME}/Desktop/testfile.txt" output="${HOME}/Desktop/output.txt" /usr/bin/touch "$output" #/usr/bin/jot -b 'sample text' 10 | /bin/cat > "$testfile" /usr/bin/jot -b 'sample text' 10 | /bin/cat -n > "$testfile" printf "%s\r\n\r\n\r\r\n" "sample text" >> "$testfile" # append a line with a '\r\n' line separator printf "%s" "sample text" >> "$testfile" # append a last line without a terminating '\n' return 0 } createfiles # inspect test file cat -vet "$testfile" ed -s "$testfile" <<< $',l' sed -n -e 'l' "$testfile" ruby -n -e 'p $_.to_s' < "$testfile" function odcfile() { /usr/bin/od -A n -c < "$@" | /usr/bin/sed -E -e 's/^[[:space:]]{11}//' \ -e s/[[:space:]]{4}/$'\001'/g \ -e 's/[[:space:]]+//g' | \ /usr/bin/tr -d '\n' | /usr/bin/tr '\001' ' ' | \ /usr/bin/sed -e s/\\\\n/$'\\\\\\n\\\n'/g return 0 } odcfile "$testfile" # remove newlines "\n" # create a new file with newline characters replaced with a space sed -e :a -e '$!N; s/\n/ /g; ta' "$testfile" > "$output" odcfile "$output" # same, but in-place sed -i "" -e :a -e '$!N; s/\n/ /g; ta' "$testfile" odcfile "$testfile" createfiles # delete newlines in-place sed -i "" -e :a -e '$!N; s/\n//g; ta' "$testfile" odcfile "$testfile" createfiles # alternative for creating a new file without newlines tr -d '\n' < "$testfile" > "$output" odcfile "$output" # delete carriage returns "\r" # create a new file with carriage returns deleted sed -e s/$'\r'//g "$testfile" > "$output" sed -e s/$'\r'$//g "$testfile" > "$output" # only at line end odcfile "$output" # alternative tr -d '\r' < "$testfile" > "$output" odcfile "$output" # delete carriage returns in-place sed -i "" -e s/$'\r'//g "$testfile" > "$output" odcfile "$testfile" createfiles # cf. http://bash-hackers.org/wiki/doku.php?id=howto:edit-ed (Pitfalls) ed -s "$testfile" <<< $'H\n,g/\r/s/\r//\n,w' # delete one carriage return in a line ed -s "$testfile" <<< $'H\n,g/\r/s/\r//g\n,w' # delete all carriage returns in a line ed -s "$testfile" <<< $'H\n,g/\r$/s/\r$//g\n,w' # delete a carriage return at line end odcfile "$testfile" printf "\n" | od -A n -c printf "\012" | od -A n -c printf "\x0a" | od -A n -c printf '[ctrl-v][ctrl-j]' | od -A n -c # \n or ^J printf "\r" | od -A n -c printf "\015" | od -A n -c printf "\x0d" | od -A n -c printf '[ctrl-v][ctrl-j]' | od -A n -c # \r or ^M # vim createfiles vim "$testfile" #... :set number :set list :%s/^M//g :set fileformat=unix #:set fileformat=dos :x odcfile "$testfile" # edit files in-place with vim createfiles # delete newlines in-place vim -e -s +':%j' +'w!' +'qa!' "$testfile" odcfile "$output" createfiles # replace every \r with \n # cf. http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix vim -e -s +':%s/\r/\r/g' +':set fileformat=unix' +'w!' +'qa!' "$testfile" odcfile "$output" createfiles # delete every \r vim -e -s +':%s/\r//g' +':set fileformat=unix' +'w!' +'qa!' "$testfile" odcfile "$output" createfiles # delete \r only when it occurs at the end of a line vim -e -s +':%s/\r$//g' +':set fileformat=unix' +'w!' +'qa!' "$testfile" odcfile "$output" createfiles # replace carriage return line endings with \n # cf. Getting rid of ^M - mixing dos and unix, http://www.vim.org/tips/tip.php?tip_id=26 printf "\r" >> "$testfile" vim -e -s +':g/\r$/s///g' +':set fileformat=unix' +'w!' +'qa!' "$testfile" odcfile "$testfile" createfiles # delete last \n of file vim -e -s +':set noeol bin' +':set fileformat=unix' +'w!' +'qa!' "$testfile" odcfile "$output" createfiles # change mixed mode files to DOS mode #vim -e -s +':%s/\r\r/\r/g' +'w!' +'qa!' "$testfile" sed -i '' -e s/$'\r\r'/$'\r'/g "$testfile" vim -e -s +':e ++ff=dos' +'w!' +'qa!' "$testfile" vim -e -s +':e ++ff=dos' +':set ff=dos' +'w!' +'qa!' "$testfile" odcfile "$output" vim "$testfile" :set ff? :x
Never been to CodeSnippets before?
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)
Delete carriage returns & newlines with sed (See related posts)
You need to create an account or log in to post comments to this site.
Related Posts
» Counting lines in awk grep shell osx mac bash line unix count file sed directory lines wc
» snippet in shell osx mac html bash unix commandline web download convert textutil ed snippet
» "openterminal" contextual me... in shell osx mac bash unix terminal file folder open cd item menu automator contextual nano
» Changing the Finder "Open Wi... in awk shell osx mac bash unix finder file application open menu contextual lsregister duti with wsupdate
» open or cd to the directory ... in shell osx mac bash unix file open cd directory shortcut
» flip - newline conversion tool in shell osx mac bash windows unix newline linefeed conversion macintosh
Snippets (source code soon to be available) developed by Peter Cooper and powered by Ruby On Rails