Sed: Difference between revisions

From wiki
Jump to navigation Jump to search
Line 10: Line 10:


=Basics=
=Basics=
;sed '/<pattern>/<action>' <file>
:Execute action on all lines in <file> matching <pattern>
:Simple actions are d(elete) (can be negated using !d, delete all lines not matching), p(rint), q(uit)
;sed 's/<old_string>/<new_string>/g' <file>
;sed 's/<old_string>/<new_string>/g' <file>
:Substitute, no whitespace is allowed after the command (s), the first character following s is the fieldseperator./g substitutes all matching patterns in a line.
:Substitute, no whitespace is allowed after the command (s), the first character following s is the fieldseperator./g substitutes all matching patterns in a line.
Line 16: Line 21:
:\1 and \2 refer to the subpatterns between brackets ().
:\1 and \2 refer to the subpatterns between brackets ().


;sed '/<pattern>/d'
;sed '/<pattern>/[ia]<text>'
:Delete matching line. !d negates the match => delete all lines not matching.
:i inserts <text> before the matched line, a after the line
 
;sed '/<pattern>/[rw] <file>'
:r(ead) from or w(rite) to <file> if <pattern> is matched.

Revision as of 10:45, 6 November 2019

Check the APO unix pages for more.

Tricks

sed 's/\r//' filename > newfilename
dos2unix substitute, remove all dos line endings.
sed -i 'commands' filename
Edit the file directly (inplace) by default the result is sent to standard output

Basics

sed '/<pattern>/<action>' <file>
Execute action on all lines in <file> matching <pattern>
Simple actions are d(elete) (can be negated using !d, delete all lines not matching), p(rint), q(uit)
sed 's/<old_string>/<new_string>/g' <file>
Substitute, no whitespace is allowed after the command (s), the first character following s is the fieldseperator./g substitutes all matching patterns in a line.
sed 's/pattern(with)sub(patterns)/\1 newpartofstring \2/' <file>
\1 and \2 refer to the subpatterns between brackets ().
sed '/<pattern>/[ia]<text>'
i inserts <text> before the matched line, a after the line
sed '/<pattern>/[rw] <file>'
r(ead) from or w(rite) to <file> if <pattern> is matched.