LinuxÒÁµéÔ°ÂÛ̳'s Archiver

li-jiahuan ·¢±íÓÚ 2006-4-2 08:52

¡¾×ªÌû¡¿SEDµ¥Ðнű¾¿ìËٲο¼£¨Unix Á÷±à¼­Æ÷£© | HANDY ONE-LINERS FOR SED (Unix stre

SEDµ¥Ðнű¾¿ìËٲο¼£¨Unix Á÷±à¼­Æ÷£©                       2005Äê12ÔÂ29ÈÕ

Ó¢ÎıêÌ⣺USEFUL ONE-LINE SCRIPTS FOR SED (Unix stream editor)
Ô­±êÌ⣺HANDY ONE-LINERS FOR SED (Unix stream editor)

ÕûÀí£ºEric Pement  - µçÓÊ£ºpemente[at]northpark[dot]edu         °æ±¾5.5
ÒëÕߣºJoe Hong     - µçÓÊ£ºhq00e[at]126[dot]com

ÔÚÒÔϵØÖ·¿ÉÕÒµ½±¾ÎĵµµÄ×îУ¨Ó¢ÎÄ£©°æ±¾£º
   [url]http://sed.sourceforge.net/sed1line.txt[/url]
   [url]http://www.pement.org/sed/sed1line.txt[/url]

ÆäËûÓïÑÔ°æ±¾£º
  ÖÐÎÄ          - [url]http://sed.sourceforge.net/sed1line_zh-CN.html[/url]
  ½Ý¿ËÓï        - [url]http://sed.sourceforge.net/sed1line_cz.html[/url]
  ºÉÓï          - [url]http://sed.sourceforge.net/sed1line_nl.html[/url]
  ·¨Óï          - [url]http://sed.sourceforge.net/sed1line_fr.html[/url]
  µÂÓï          - [url]http://sed.sourceforge.net/sed1line_de.html[/url]

  ÆÏÓï          - [url]http://sed.sourceforge.net/sed1line_pt-BR.html[/url]


Îı¾¼ä¸ô£º
--------

# ÔÚÿһÐкóÃæÔö¼ÓÒ»¿ÕÐÐ
sed G

# ½«Ô­À´µÄËùÓпÕÐÐɾ³ý²¢ÔÚÿһÐкóÃæÔö¼ÓÒ»¿ÕÐС£
# ÕâÑùÔÚÊä³öµÄÎı¾ÖÐÿһÐкóÃæ½«ÓÐÇÒÖ»ÓÐÒ»¿ÕÐС£
sed '/^$/d;G'

# ÔÚÿһÐкóÃæÔö¼ÓÁ½ÐпÕÐÐ
sed 'G;G'

# ½«µÚÒ»¸ö½Å±¾Ëù²úÉúµÄËùÓпÕÐÐɾ³ý£¨¼´É¾³ýËùÓÐżÊýÐУ©
sed 'n;d'

# ÔÚÆ¥ÅäʽÑù¡°regex¡±µÄÐÐ֮ǰ²åÈëÒ»¿ÕÐÐ
sed '/regex/{x;p;x;}'

# ÔÚÆ¥ÅäʽÑù¡°regex¡±µÄÐÐÖ®ºó²åÈëÒ»¿ÕÐÐ
sed '/regex/G'

# ÔÚÆ¥ÅäʽÑù¡°regex¡±µÄÐÐ֮ǰºÍÖ®ºó¸÷²åÈëÒ»¿ÕÐÐ
sed '/regex/{x;p;x;G;}'

±àºÅ£º
--------

# ΪÎļþÖеÄÿһÐнøÐбàºÅ£¨¼òµ¥µÄ×ó¶ÔÆë·½Ê½£©¡£ÕâÀïʹÓÃÁË¡°ÖƱí·û¡±
# £¨tab£¬¼û±¾ÎÄĩβ¹ØÓÚ'\t'µÄÓ÷¨µÄÃèÊö£©¶ø²»ÊǿոñÀ´¶ÔÆë±ßÔµ¡£
sed = filename | sed 'N;s/\n/\t/'

# ¶ÔÎļþÖеÄËùÓÐÐбàºÅ£¨ÐкÅÔÚ×ó£¬ÎÄ×ÖÓÒ¶Ë¶ÔÆë£©¡£
sed = filename | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'

# ¶ÔÎļþÖеÄËùÓÐÐбàºÅ£¬µ«Ö»ÏÔʾ·Ç¿Õ°×ÐеÄÐкš£
sed '/./=' filename | sed '/./N; s/\n/ /'

# ¼ÆËãÐÐÊý £¨Ä£Äâ "wc -l"£©
sed -n '$='

Îı¾×ª»»ºÍÌæ´ú£º
--------

# Unix»·¾³£º×ª»»DOSµÄÐÂÐзû£¨CR/LF£©ÎªUnix¸ñʽ¡£
sed 's/.$//'                     # ¼ÙÉèËùÓÐÐÐÒÔCR/LF½áÊø
sed 's/^M$//'                    # ÔÚbash/tcshÖУ¬½«°´Ctrl-M¸ÄΪ°´Ctrl-V
sed 's/\x0D$//'                  # ssed¡¢gsed 3.02.80£¬¼°¸ü¸ß°æ±¾

# Unix»·¾³£º×ª»»UnixµÄÐÂÐзû£¨LF£©ÎªDOS¸ñʽ¡£
sed "s/$/`echo -e \\\r`/"        # ÔÚkshÏÂËùʹÓõÄÃüÁî
sed 's/$'"/`echo \\\r`/"         # ÔÚbashÏÂËùʹÓõÄÃüÁî
sed "s/$/`echo \\\r`/"           # ÔÚzshÏÂËùʹÓõÄÃüÁî
sed 's/$/\r/'                    # gsed 3.02.80 ¼°¸ü¸ß°æ±¾

# DOS»·¾³£º×ª»»UnixÐÂÐзû£¨LF£©ÎªDOS¸ñʽ¡£
sed "s/$//"                      # ·½·¨ 1
sed -n p                         # ·½·¨ 2

# DOS»·¾³£º×ª»»DOSÐÂÐзû£¨CR/LF£©ÎªUnix¸ñʽ¡£
# ÏÂÃæµÄ½Å±¾Ö»¶ÔUnxUtils sed 4.0.7 ¼°¸ü¸ß°æ±¾ÓÐЧ¡£ÒªÊ¶±ðUnxUtils°æ±¾µÄ
#  sed¿ÉÒÔͨ¹ýÆäÌØÓеġ°--text¡±Ñ¡Ïî¡£Äã¿ÉÒÔʹÓðïÖúÑ¡Ï¡°--help¡±£©¿´
# ÆäÖÐÓÐÎÞÒ»¸ö¡°--text¡±ÏîÒÔ´ËÀ´ÅжÏËùʹÓõÄÊÇ·ñÊÇUnxUtils°æ±¾¡£ÆäËüDOS
# °æ±¾µÄµÄsedÔòÎÞ·¨½øÐÐÕâһת»»¡£µ«¿ÉÒÔÓá°tr¡±À´ÊµÏÖÕâһת»»¡£
sed "s/\r//" infile >outfile     # UnxUtils sed v4.0.7 »ò¸ü¸ß°æ±¾
tr -d \r <infile >outfile        # GNU tr 1.22 »ò¸ü¸ß°æ±¾

# ½«Ã¿Ò»ÐÐǰµ¼µÄ¡°¿Õ°××Ö·û¡±£¨¿Õ¸ñ£¬ÖƱí·û£©É¾³ý
# ʹ֮×ó¶ÔÆë
sed 's/^[ \t]*//'                # ¼û±¾ÎÄĩβ¹ØÓÚ'\t'Ó÷¨µÄÃèÊö

# ½«Ã¿Ò»ÐÐÍÏβµÄ¡°¿Õ°××Ö·û¡±£¨¿Õ¸ñ£¬ÖƱí·û£©É¾³ý
sed 's/[ \t]*$//'                # ¼û±¾ÎÄĩβ¹ØÓÚ'\t'Ó÷¨µÄÃèÊö

# ½«Ã¿Ò»ÐÐÖеÄǰµ¼ºÍÍÏβµÄ¿Õ°××Ö·ûɾ³ý
sed 's/^[ \t]*//;s/[ \t]*$//'

# ÔÚÿһÐпªÍ·´¦²åÈë5¸ö¿Õ¸ñ£¨Ê¹È«ÎÄÏòÓÒÒÆ¶¯5¸ö×Ö·ûµÄλÖã©
sed 's/^/     /'

# ÒÔ79¸ö×Ö·ûΪ¿í¶È£¬½«ËùÓÐÎı¾ÓÒ¶ÔÆë
sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # 78¸ö×Ö·ûÍâ¼Ó×îºóµÄÒ»¸ö¿Õ¸ñ

# ÒÔ79¸ö×Ö·ûΪ¿í¶È£¬Ê¹ËùÓÐÎı¾¾ÓÖС£ÔÚ·½·¨1ÖУ¬ÎªÁËÈÃÎı¾¾ÓÖÐÿһÐеÄǰ
# Í·ºÍºóÍ·¶¼Ìî³äÁ˿ոñ¡£ ÔÚ·½·¨2ÖУ¬ÔÚ¾ÓÖÐÎı¾µÄ¹ý³ÌÖÐÖ»ÔÚÎı¾µÄÇ°ÃæÌî³ä
# ¿Õ¸ñ£¬²¢ÇÒ×îÖÕÕâЩ¿Õ¸ñ½«ÓÐÒ»°ë»á±»É¾³ý¡£´ËÍâÿһÐеĺóÍ·²¢Î´Ìî³ä¿Õ¸ñ¡£
sed  -e :a -e 's/^.\{1,77\}$/ & /;ta'                     # ·½·¨1
sed  -e :a -e 's/^.\{1,77\}$/ &/;ta' -e 's/\( *\)\1/\1/'  # ·½·¨2

# ÔÚÿһÐÐÖвéÕÒ×Ö´®¡°foo¡±£¬²¢½«ÕÒµ½µÄ¡°foo¡±Ì滻Ϊ¡°bar¡±
sed 's/foo/bar/'                 # Ö»Ìæ»»Ã¿Ò»ÐÐÖеĵÚÒ»¸ö¡°foo¡±×Ö´®
sed 's/foo/bar/4'                # Ö»Ìæ»»Ã¿Ò»ÐÐÖеĵÚËĸö¡°foo¡±×Ö´®
sed 's/foo/bar/g'                # ½«Ã¿Ò»ÐÐÖеÄËùÓС°foo¡±¶¼»»³É¡°bar¡±
sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # Ìæ»»µ¹ÊýµÚ¶þ¸ö¡°foo¡±
sed 's/\(.*\)foo/\1bar/'            # Ìæ»»×îºóÒ»¸ö¡°foo¡±

# Ö»ÔÚÐÐÖгöÏÖ×Ö´®¡°baz¡±µÄÇé¿öϽ«¡°foo¡±Ìæ»»³É¡°bar¡±
sed '/baz/s/foo/bar/g'

# ½«¡°foo¡±Ìæ»»³É¡°bar¡±£¬²¢ÇÒÖ»ÔÚÐÐÖÐδ³öÏÖ×Ö´®¡°baz¡±µÄÇé¿öÏÂÌæ»»
sed '/baz/!s/foo/bar/g'

# ²»¹ÜÊÇ¡°scarlet¡±¡°ruby¡±»¹ÊÇ¡°puce¡±£¬Ò»ÂÉ»»³É¡°red¡±
sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'  #¶Ô¶àÊýµÄsed¶¼ÓÐЧ
gsed 's/scarlet\|ruby\|puce/red/g'               # Ö»¶ÔGNU sedÓÐЧ

# µ¹ÖÃËùÓÐÐУ¬µÚÒ»ÐгÉΪ×îºóÒ»ÐУ¬ÒÀ´ÎÀàÍÆ£¨Ä£Äâ¡°tac¡±£©¡£
# ÓÉÓÚijЩԭÒò£¬Ê¹ÓÃÏÂÃæÃüÁîʱHHsed v1.5»á½«ÎļþÖеĿÕÐÐɾ³ý
sed '1!G;h;$!d'               # ·½·¨1
sed -n '1!G;h;$p'             # ·½·¨2

# ½«ÐÐÖеÄ×Ö·ûÄæÐòÅÅÁУ¬µÚÒ»¸ö×Ö³ÉΪ×îºóÒ»×Ö£¬¡­¡­£¨Ä£Äâ¡°rev¡±£©
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

# ½«Ã¿Á½ÐÐÁ¬½Ó³ÉÒ»ÐУ¨ÀàËÆ¡°paste¡±£©
sed '$!N;s/\n/ /'

# Èç¹ûµ±Ç°ÐÐÒÔ·´Ð±¸Ü¡°\¡±½áÊø£¬Ôò½«ÏÂÒ»Ðв¢µ½µ±Ç°ÐÐĩβ
# ²¢È¥µôÔ­À´ÐÐβµÄ·´Ð±¸Ü
sed -e :a -e '/\\$/N; s/\\\n//; ta'

# Èç¹ûµ±Ç°ÐÐÒԵȺſªÍ·£¬½«µ±Ç°Ðв¢µ½ÉÏÒ»ÐÐĩβ
# ²¢ÒÔµ¥¸ö¿Õ¸ñ´úÌæÔ­À´ÐÐÍ·µÄ¡°=¡±
sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'

# ΪÊý×Ö×Ö´®Ôö¼Ó¶ººÅ·Ö¸ô·ûºÅ£¬½«¡°1234567¡±¸ÄΪ¡°1,234,567¡±
gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta'                     # GNU sed
sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  # ÆäËûsed

# Ϊ´øÓÐСÊýµãºÍ¸ººÅµÄÊýÖµÔö¼Ó¶ººÅ·Ö¸ô·û£¨GNU sed£©
gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'

# ÔÚÿ5ÐкóÔö¼ÓÒ»¿Õ°×ÐÐ £¨ÔÚµÚ5£¬10£¬15£¬20£¬µÈÐкóÔö¼ÓÒ»¿Õ°×ÐУ©
gsed '0~5G'                      # Ö»¶ÔGNU sedÓÐЧ
sed 'n;n;n;n;G;'                 # ÆäËûsed

Ñ¡ÔñÐÔµØÏÔÊ¾ÌØ¶¨ÐУº
--------

# ÏÔʾÎļþÖеÄǰ10ÐÐ £¨Ä£Äâ¡°head¡±µÄÐÐΪ£©
sed 10q

# ÏÔʾÎļþÖеĵÚÒ»ÐÐ £¨Ä£Äâ¡°head -1¡±ÃüÁ
sed q

# ÏÔʾÎļþÖеÄ×îºó10ÐÐ £¨Ä£Äâ¡°tail¡±£©
sed -e :a -e '$q;N;11,$D;ba'

# ÏÔʾÎļþÖеÄ×îºó2ÐУ¨Ä£Äâ¡°tail -2¡±ÃüÁ
sed '$!N;$!D'

# ÏÔʾÎļþÖеÄ×îºóÒ»ÐУ¨Ä£Äâ¡°tail -1¡±£©
sed '$!d'                        # ·½·¨1
sed -n '$p'                      # ·½·¨2

# ÏÔʾÎļþÖеĵ¹ÊýµÚ¶þÐÐ
sed -e '$!{h;d;}' -e x              # µ±ÎļþÖÐÖ»ÓÐÒ»ÐÐʱ£¬ÊäÈë¿ÕÐÐ
sed -e '1{$q;}' -e '$!{h;d;}' -e x  # µ±ÎļþÖÐÖ»ÓÐÒ»ÐÐʱ£¬ÏÔʾ¸ÃÐÐ
sed -e '1{$d;}' -e '$!{h;d;}' -e x  # µ±ÎļþÖÐÖ»ÓÐÒ»ÐÐʱ£¬²»Êä³ö

# Ö»ÏÔʾƥÅäÕýÔò±í´ïʽµÄÐУ¨Ä£Äâ¡°grep¡±£©
sed -n '/regexp/p'               # ·½·¨1
sed '/regexp/!d'                 # ·½·¨2

# Ö»ÏÔʾ¡°²»¡±Æ¥ÅäÕýÔò±í´ïʽµÄÐУ¨Ä£Äâ¡°grep -v¡±£©
sed -n '/regexp/!p'              # ·½·¨1£¬ÓëÇ°ÃæµÄÃüÁîÏà¶ÔÓ¦
sed '/regexp/d'                  # ·½·¨2£¬ÀàËÆµÄÓï·¨

# ²éÕÒ¡°regexp¡±²¢½«Æ¥ÅäÐеÄÉÏÒ»ÐÐÏÔʾ³öÀ´£¬µ«²¢²»ÏÔʾƥÅäÐÐ
sed -n '/regexp/{g;1!p;};h'

# ²éÕÒ¡°regexp¡±²¢½«Æ¥ÅäÐеÄÏÂÒ»ÐÐÏÔʾ³öÀ´£¬µ«²¢²»ÏÔʾƥÅäÐÐ
sed -n '/regexp/{n;p;}'

# ÏÔʾ°üº¬¡°regexp¡±µÄÐм°ÆäǰºóÐУ¬²¢ÔÚµÚÒ»ÐÐ֮ǰ¼ÓÉÏ¡°regexp¡±Ëù
# ÔÚÐеÄÐкŠ£¨ÀàËÆ¡°grep -A1 -B1¡±£©
sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h

# ÏÔʾ°üº¬¡°AAA¡±¡¢¡°BBB¡±»ò¡°CCC¡±µÄÐУ¨ÈÎÒâ´ÎÐò£©
sed '/AAA/!d; /BBB/!d; /CCC/!d'  # ×Ö´®µÄ´ÎÐò²»Ó°Ïì½á¹û

# ÏÔʾ°üº¬¡°AAA¡±¡¢¡°BBB¡±ºÍ¡°CCC¡±µÄÐУ¨¹Ì¶¨´ÎÐò£©
sed '/AAA.*BBB.*CCC/!d'

# ÏÔʾ°üº¬¡°AAA¡±¡°BBB¡±»ò¡°CCC¡±µÄÐÐ £¨Ä£Äâ¡°egrep¡±£©
sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    # ¶àÊýsed
gsed '/AAA\|BBB\|CCC/!d'                        # ¶ÔGNU sedÓÐЧ

# ÏÔʾ°üº¬¡°AAA¡±µÄ¶ÎÂä £¨¶ÎÂä¼äÒÔ¿ÕÐзָô£©
# HHsed v1.5 ±ØÐëÔÚ¡°x;¡±ºó¼ÓÈë¡°G;¡±£¬½ÓÏÂÀ´µÄ3¸ö½Å±¾¶¼ÊÇÕâÑù
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'

# ÏÔʾ°üº¬¡°AAA¡±¡°BBB¡±ºÍ¡°CCC¡±Èý¸ö×Ö´®µÄ¶ÎÂä £¨ÈÎÒâ´ÎÐò£©
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'

# ÏÔʾ°üº¬¡°AAA¡±¡¢¡°BBB¡±¡¢¡°CCC¡±ÈýÕßÖÐÈÎÒ»×Ö´®µÄ¶ÎÂä £¨ÈÎÒâ´ÎÐò£©
sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         # Ö»¶ÔGNU sedÓÐЧ

# ÏÔʾ°üº¬65¸ö»òÒÔÉÏ×Ö·ûµÄÐÐ
sed -n '/^.\{65\}/p'

# ÏÔʾ°üº¬65¸öÒÔÏÂ×Ö·ûµÄÐÐ
sed -n '/^.\{65\}/!p'            # ·½·¨1£¬ÓëÉÏÃæµÄ½Å±¾Ïà¶ÔÓ¦
sed '/^.\{65\}/d'                # ·½·¨2£¬¸ü¼ò±ãÒ»µãµÄ·½·¨

# ÏÔʾ²¿·ÖÎı¾¨D¨D´Ó°üº¬ÕýÔò±í´ïʽµÄÐпªÊ¼µ½×îºóÒ»ÐнáÊø
sed -n '/regexp/,$p'

# ÏÔʾ²¿·ÖÎı¾¨D¨DÖ¸¶¨Ðкŷ¶Î§£¨´ÓµÚ8ÖÁµÚ12ÐУ¬º¬8ºÍ12ÐУ©
sed -n '8,12p'                   # ·½·¨1
sed '8,12!d'                     # ·½·¨2

# ÏÔʾµÚ52ÐÐ
sed -n '52p'                     # ·½·¨1
sed '52!d'                       # ·½·¨2
sed '52q;d'                      # ·½·¨3, ´¦Àí´óÎļþʱ¸üÓÐЧÂÊ

# ´ÓµÚ3ÐпªÊ¼£¬Ã¿7ÐÐÏÔʾһ´Î   
gsed -n '3~7p'                   # Ö»¶ÔGNU sedÓÐЧ
sed -n '3,${p;n;n;n;n;n;n;}'     # ÆäËûsed

# ÏÔʾÁ½¸öÕýÔò±í´ïʽ֮¼äµÄÎı¾£¨°üº¬£©
sed -n '/Iowa/,/Montana/p'       # Çø·Ö´óСд·½Ê½

Ñ¡ÔñÐÔµØÉ¾³ýÌØ¶¨ÐУº
--------

# ÏÔʾͨƪÎĵµ£¬³ýÁËÁ½¸öÕýÔò±í´ïʽ֮¼äµÄÄÚÈÝ
sed '/Iowa/,/Montana/d'

# ɾ³ýÎļþÖÐÏàÁÚµÄÖØ¸´ÐУ¨Ä£Äâ¡°uniq¡±£©
# Ö»±£ÁôÖØ¸´ÐÐÖеĵÚÒ»ÐУ¬ÆäËûÐÐɾ³ý
sed '$!N; /^\(.*\)\n\1$/!P; D'

# ɾ³ýÎļþÖеÄÖØ¸´ÐУ¬²»¹ÜÓÐÎÞÏàÁÚ¡£×¢Òâhold spaceËùÄÜÖ§³ÖµÄ»º´æ
# ´óС£¬»òÕßʹÓÃGNU sed¡£
sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'

# ɾ³ý³ýÖØ¸´ÐÐÍâµÄËùÓÐÐУ¨Ä£Äâ¡°uniq -d¡±£©
sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'

# ɾ³ýÎļþÖпªÍ·µÄ10ÐÐ
sed '1,10d'

# ɾ³ýÎļþÖеÄ×îºóÒ»ÐÐ
sed '$d'

# ɾ³ýÎļþÖеÄ×îºóÁ½ÐÐ
sed 'N;$!P;$!D;$d'

# ɾ³ýÎļþÖеÄ×îºó10ÐÐ
sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # ·½·¨1
sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # ·½·¨2

# ɾ³ý8µÄ±¶ÊýÐÐ
gsed '0~8d'                           # Ö»¶ÔGNU sedÓÐЧ
sed 'n;n;n;n;n;n;n;d;'                # ÆäËûsed

# ɾ³ýÆ¥ÅäʽÑùµÄÐÐ
sed '/pattern/d'                      # ɾ³ýº¬patternµÄÐС£µ±È»pattern
                                       # ¿ÉÒÔ»»³ÉÈκÎÓÐЧµÄÕýÔò±í´ïʽ

# ɾ³ýÎļþÖеÄËùÓпÕÐУ¨Óë¡°grep '.' ¡±Ð§¹ûÏàͬ£©
sed '/^$/d'                           # ·½·¨1
sed '/./!d'                           # ·½·¨2

# Ö»±£Áô¶à¸öÏàÁÚ¿ÕÐеĵÚÒ»ÐС£²¢ÇÒɾ³ýÎļþ¶¥²¿ºÍβ²¿µÄ¿ÕÐС£
# £¨Ä£Äâ¡°cat -s¡±£©
sed '/./,/^$/!d'        #·½·¨1£¬É¾³ýÎļþ¶¥²¿µÄ¿ÕÐУ¬ÔÊÐíβ²¿±£ÁôÒ»¿ÕÐÐ
sed '/^$/N;/\n$/D'      #·½·¨2£¬ÔÊÐí¶¥²¿±£ÁôÒ»¿ÕÐУ¬Î²²¿²»Áô¿ÕÐÐ

# Ö»±£Áô¶à¸öÏàÁÚ¿ÕÐеÄǰÁ½ÐС£
sed '/^$/N;/\n$/N;//D'

# ɾ³ýÎļþ¶¥²¿µÄËùÓпÕÐÐ
sed '/./,$!d'

# ɾ³ýÎļþβ²¿µÄËùÓпÕÐÐ
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  # ¶ÔËùÓÐsedÓÐЧ
sed -e :a -e '/^\n*$/N;/\n$/ba'        # ͬÉÏ£¬µ«Ö»¶Ô gsed 3.02.*ÓÐЧ

# ɾ³ýÿ¸ö¶ÎÂäµÄ×îºóÒ»ÐÐ
sed -n '/^$/{p;h;};/./{x;/./p;}'

ÌØÊâÓ¦Óãº
--------

# ÒÆ³ýÊÖ²áÒ³£¨man page£©ÖеÄnroff±ê¼Ç¡£ÔÚUnix System V»òbash shellÏÂʹ
# ÓÃ'echo'ÃüÁîʱ¿ÉÄÜÐèÒª¼ÓÉÏ -e Ñ¡Ïî¡£
sed "s/.`echo \\\b`//g"    # Íâ²ãµÄË«À¨ºÅÊDZØÐëµÄ£¨Unix»·¾³£©
sed 's/.^H//g'             # ÔÚbash»òtcshÖÐ, °´ Ctrl-V ÔÙ°´ Ctrl-H
sed 's/.\x08//g'           # sed 1.5£¬GNU sed£¬ssedËùʹÓõÄÊ®Áù½øÖƵıíʾ·½·¨

# ÌáÈ¡ÐÂÎÅ×é»ò e-mail µÄÓʼþÍ·
sed '/^$/q'                # ɾ³ýµÚÒ»ÐпÕÐкóµÄËùÓÐÄÚÈÝ

# ÌáÈ¡ÐÂÎÅ×é»ò e-mail µÄÕýÎIJ¿·Ö
sed '1,/^$/d'              # ɾ³ýµÚÒ»ÐпÕÐÐ֮ǰµÄËùÓÐÄÚÈÝ

# ´ÓÓʼþÍ·ÌáÈ¡¡°Subject¡±£¨±êÌâÀ¸×ֶΣ©£¬²¢ÒƳý¿ªÍ·µÄ¡°Subject:¡±×ÖÑù
sed '/^Subject: */!d; s///;q'

# ´ÓÓʼþÍ·»ñµÃ»Ø¸´µØÖ·
sed '/^Reply-To:/q; /^From:/h; /./d;g;q'

# »ñÈ¡ÓʼþµØÖ·¡£ÔÚÉÏÒ»¸ö½Å±¾Ëù²úÉúµÄÄÇÒ»ÐÐÓʼþÍ·µÄ»ù´¡ÉϽøÒ»²½µÄ½«·ÇµçÓÊ
# µØÖ·µÄ²¿·ÖÌê³ý¡££¨¼ûÉÏÒ»½Å±¾£©
sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'

# ÔÚÿһÐпªÍ·¼ÓÉÏÒ»¸ö¼âÀ¨ºÅºÍ¿Õ¸ñ£¨ÒýÓÃÐÅÏ¢£©
sed 's/^/> /'

# ½«Ã¿Ò»ÐпªÍ·´¦µÄ¼âÀ¨ºÅºÍ¿Õ¸ñɾ³ý£¨½â³ýÒýÓã©
sed 's/^> //'

# ÒÆ³ý´ó²¿·ÖµÄHTML±êÇ©£¨°üÀ¨¿çÐбêÇ©£©
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

# ½«·Ö³É¶à¾íµÄuuencodeÎļþ½âÂë¡£ÒÆ³ýÎļþÍ·ÐÅÏ¢£¬Ö»±£Áôuuencode±àÂ벿·Ö¡£
# Îļþ±ØÐëÒÔÌØ¶¨Ë³Ðò´«¸øsed¡£ÏÂÃæµÚÒ»ÖÖ°æ±¾µÄ½Å±¾¿ÉÒÔÖ±½ÓÔÚÃüÁîÐÐÏÂÊäÈ룻
# µÚ¶þÖÖ°æ±¾Ôò¿ÉÒÔ·ÅÈëÒ»¸ö´øÖ´ÐÐȨÏÞµÄshell½Å±¾ÖС££¨ÓÉRahul DhesiµÄÒ»
# ¸ö½Å±¾Ð޸ĶøÀ´¡££©
sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode   # vers. 1
sed '/^end/,/^begin/d' "$@" | uudecode                    # vers. 2

# ½«ÎļþÖеĶÎÂäÒÔ×Öĸ˳ÐòÅÅÐò¡£¶ÎÂä¼äÒÔ£¨Ò»Ðлò¶àÐУ©¿ÕÐзָô¡£GNU sedʹÓÃ
# ×ÖÔª¡°\v¡±À´±íʾ´¹Ö±ÖƱí·û£¬ÕâÀïÓÃËüÀ´×÷Ϊ»»ÐзûµÄռλ·û¨D¨Dµ±È»ÄãÒ²¿ÉÒÔ
# ÓÃÆäËûδÔÚÎļþÖÐʹÓõÄ×Ö·ûÀ´´úÌæËü¡£
sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'
gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'

# ·Ö±ðѹËõÿ¸ö.TXTÎļþ£¬Ñ¹Ëõºóɾ³ýÔ­À´µÄÎļþ²¢½«Ñ¹ËõºóµÄ.ZIPÎļþ
# ÃüÃûΪÓëÔ­À´ÏàͬµÄÃû×Ö£¨Ö»ÊÇÀ©Õ¹Ãû²»Í¬£©¡££¨DOS»·¾³£º¡°dir /b¡±
# ÏÔʾ²»´øÂ·¾¶µÄÎļþÃû£©¡£
echo @echo off >zipup.bat
dir /b *.txt | sed "s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/" >>zipup.bat


ʹÓÃSED£ºSed½ÓÊÜÒ»¸ö»ò¶à¸ö±à¼­ÃüÁ²¢ÇÒÿ¶ÁÈëÒ»Ðкó¾ÍÒÀ´ÎÓ¦ÓÃÕâЩÃüÁî¡£
µ±¶ÁÈëµÚÒ»ÐÐÊäÈëºó£¬sed¶ÔÆäÓ¦ÓÃËùÓеÄÃüÁȻºó½«½á¹ûÊä³ö¡£½Ó×ÅÔÙ¶ÁÈëµÚ¶þ
ÐÐÊäÈ룬¶ÔÆäÓ¦ÓÃËùÓеÄÃüÁî¡­¡­²¢Öظ´Õâ¸ö¹ý³Ì¡£ÉÏÒ»¸öÀý×ÓÖÐsedÓɱê×¼ÊäÈëÉè
±¸£¨¼´ÃüÁî½âÊÍÆ÷£¬Í¨³£ÊÇÒԹܵÀÊäÈëµÄÐÎʽ£©»ñµÃÊäÈë¡£ÔÚÃüÁîÐиø³öÒ»¸ö»ò¶à
¸öÎļþÃû×÷Ϊ²ÎÊýʱ£¬ÕâЩÎļþÈ¡´ú±ê×¼ÊäÈëÉ豸³ÉΪsedµÄÊäÈë¡£sedµÄÊä³ö½«±»
Ë͵½±ê×¼Êä³ö£¨ÏÔʾÆ÷£©¡£Òò´Ë£º

cat filename | sed '10q'         # ʹÓùܵÀÊäÈë
sed '10q' filename               # ͬÑùЧ¹û£¬µ«²»Ê¹ÓùܵÀÊäÈë
sed '10q' filename > newfile     # ½«Êä³ö×ªÒÆ£¨Öض¨Ïò£©µ½´ÅÅÌÉÏ

ÒªÁ˽âsedÃüÁîµÄʹÓÃ˵Ã÷£¬°üÀ¨ÈçºÎͨ¹ý½Å±¾Îļþ£¨¶ø·Ç´ÓÃüÁîÐУ©À´Ê¹ÓÃÕâЩÃü
ÁÇë²ÎÔÄ¡¶sed & awk¡·µÚ¶þ°æ£¬×÷ÕßDale DoughertyºÍArnold Robbins
£¨O'Reilly£¬1997£»[url]http://www.ora.com£©£¬¡¶UNIX[/url] Text Processing¡·£¬×÷Õß
Dale DoughertyºÍTim O'Reilly£¨Hayden Books£¬1987£©»òÕßÊÇMike ArstдµÄ½Ì
³Ì¨D¨DѹËõ°üµÄÃû³ÆÊÇ¡°U-SEDIT2.ZIP¡±£¨ÔÚÐí¶àÕ¾µãÉ϶¼Õҵõ½£©¡£Òª·¢¾òsed
µÄDZÁ¦£¬Ôò±ØÐë¶Ô¡°ÕýÔò±í´ïʽ¡±ÓÐ×ã¹»µÄÀí½â¡£ÕýÔò±í´ïʽµÄ×ÊÁÏ¿ÉÒÔ¿´
¡¶Mastering Regular Expressions¡·×÷ÕßJeffrey Friedl£¨O'reilly 1997£©¡£
UnixϵͳËùÌṩµÄÊÖ²áÒ³£¨¡°man¡±£©Ò²»áÓÐËù°ïÖú£¨ÊÔÒ»ÏÂÕâЩÃüÁî
¡°man sed¡±¡¢¡°man regexp¡±£¬»òÕß¿´¡°man ed¡±ÖйØÓÚÕýÔò±í´ïʽµÄ²¿·Ö£©£¬µ«
ÊÖ²áÌṩµÄÐÅÏ¢±È½Ï¡°³éÏ󡱨D¨DÕâÒ²ÊÇËüһֱΪÈËËùÚ¸²¡µÄ¡£²»¹ý£¬Ëü±¾À´¾Í²»
ÊÇÓÃÀ´½Ì³õѧÕßÈçºÎʹÓÃsed»òÕýÔò±í´ïʽµÄ½Ì²Ä£¬¶øÖ»ÊÇΪÄÇЩÊìϤÕâЩ¹¤¾ßµÄÈË
ÌṩµÄһЩÎı¾²Î¿¼¡£

À¨ºÅÓï·¨£ºÇ°ÃæµÄÀý×Ó¶ÔsedÃüÁî»ù±¾É϶¼Ê¹Óõ¥ÒýºÅ£¨'...'£©¶ø·ÇË«ÒýºÅ
£¨"..."£©ÕâÊÇÒòΪsedͨ³£ÊÇÔÚUnixƽ̨ÉÏʹÓᣵ¥ÒýºÅÏ£¬UnixµÄshell£¨ÃüÁî
½âÊÍÆ÷£©²»»á¶ÔÃÀÔª·û£¨$£©ºÍºóÒýºÅ£¨`...`£©½øÐнâÊͺÍÖ´ÐС£¶øÔÚË«ÒýºÅÏÂ
ÃÀÔª·û»á±»Õ¹¿ªÎª±äÁ¿»ò²ÎÊýµÄÖµ£¬ºóÒýºÅÖеÄÃüÁî±»Ö´Ðв¢ÒÔÊä³öµÄ½á¹û´úÌæ
ºóÒýºÅÖеÄÄÚÈÝ¡£¶øÔÚ¡°csh¡±¼°ÆäÑÜÉúµÄshellÖÐʹÓøÐ̾ºÅ£¨!£©Ê±ÐèÒªÔÚÆäǰ
Ãæ¼ÓÉÏתÒåÓõķ´Ð±¸Ü£¨¾ÍÏñÕâÑù£º\!£©ÒÔ±£Ö¤ÉÏÃæËùʹÓõÄÀý×ÓÄÜÕý³£ÔËÐÐ
£¨°üÀ¨Ê¹Óõ¥ÒýºÅµÄÇé¿öÏ£©¡£DOS°æ±¾µÄSedÔòÒ»ÂÉʹÓÃË«ÒýºÅ£¨"..."£©¶ø²»ÊÇ
ÒýºÅÀ´È¦ÆðÃüÁî¡£

'\t'µÄÓ÷¨£ºÎªÁËʹ±¾Îı£³ÖÐÐÎļò½à£¬ÎÒÃÇÔڽű¾ÖÐʹÓÃ'\t'À´±íʾһ¸öÖÆ±í
·û¡£µ«ÊÇÏÖÔڴ󲿷ְ汾µÄsed»¹²»ÄÜʶ±ð'\t'µÄ¼òд·½Ê½£¬Òò´Ëµ±ÔÚÃüÁîÐÐÖÐΪ
½Å±¾ÊäÈëÖÆ±í·ûʱ£¬ÄãÓ¦¸ÃÖ±½Ó°´TAB¼üÀ´ÊäÈëÖÆ±í·û¶ø²»ÊÇÊäÈë'\t'¡£ÏÂÁеŤ
¾ßÈí¼þ¶¼Ö§³Ö'\t'×öΪһ¸öÕýÔò±í´ïʽµÄ×ÖÔªÀ´±íÊ¾ÖÆ±í·û£ºawk¡¢perl¡¢HHsed¡¢
sedmodÒÔ¼°GNU sed v3.02.80¡£

²»Í¬°æ±¾µÄSED£º²»Í¬µÄ°æ±¾¼äµÄsed»áÓÐЩ²»Í¬Ö®´¦£¬¿ÉÒÔÏëÏóËüÃÇÖ®¼äÔÚÓï·¨ÉÏ
»áÓвîÒì¡£¾ßÌå¶øÑÔ£¬ËüÃÇÖд󲿷ֲ»Ö§³ÖÔڱ༭ÃüÁîÖмäʹÓñêÇ©£¨:name£©»ò·Ö
Ö§ÃüÁb,t£©£¬³ý·ÇÊÇ·ÅÔÚÄÇЩµÄĩβ¡£ÕâÆªÎĵµÖÐÎÒÃǾ¡Á¿Ñ¡ÓÃÁË¿ÉÒÆÖ²ÐԽϸß
µÄÓï·¨£¬ÒÔʹ´ó¶àÊý°æ±¾µÄsedµÄÓû§¶¼ÄÜʹÓÃÕâЩ½Å±¾¡£²»¹ýGNU°æ±¾µÄsedÔÊÐíʹ
Óøü¼ò½àµÄÓï·¨¡£ÏëÏñһϵ±¶ÁÕß¿´µ½Ò»¸öºÜ³¤µÄÃüÁîʱµÄÐÄÇ飺

   sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d

ºÃÏûÏ¢ÊÇGNU sedÄÜÈÃÃüÁî¸ü½ô´Õ£º

   sed '/AAA/b;/BBB/b;/CCC/b;d'      # ÉõÖÁ¿ÉÒÔд³É
   sed '/AAA\|BBB\|CCC/b;d'

´ËÍ⣬Çë×¢ÒâËäÈ»Ðí¶à°æ±¾µÄsed½ÓÊÜÏó¡°/one/ s/RE1/RE2/¡±ÕâÖÖÔÚ's'ǰ´øÓпÕ
¸ñµÄÃüÁµ«ÕâЩ°æ±¾ÖÐÓÐЩȴ²»½ÓÊÜÕâÑùµÄÃüÁî:¡°/one/! s/RE1/RE2/¡±¡£Õâʱ
Ö»ÐèÒª°ÑÖмäµÄ¿Õ¸ñÈ¥µô¾ÍÐÐÁË¡£

ËÙ¶ÈÓÅ»¯£ºµ±ÓÉÓÚijÖÖÔ­Òò£¨±ÈÈçÊäÈëÎļþ½Ï´ó¡¢´¦ÀíÆ÷»òÓ²Å̽ÏÂýµÈ£©ÐèÒªÌá¸ß
ÃüÁîÖ´ÐÐËÙ¶Èʱ£¬¿ÉÒÔ¿¼ÂÇÔÚÌæ»»ÃüÁ¡°s/.../.../¡±£©Ç°Ãæ¼ÓÉϵØÖ·±í´ïʽÀ´
Ìá¸ßËÙ¶È¡£¾ÙÀýÀ´Ëµ£º

   sed 's/foo/bar/g' filename         # ±ê×¼Ìæ»»ÃüÁî
   sed '/foo/ s/foo/bar/g' filename   # Ëٶȸü¿ì
   sed '/foo/ s//bar/g' filename      # ¼òдÐÎʽ

µ±Ö»ÐèÒªÏÔʾÎļþµÄÇ°ÃæµÄ²¿·Ö»òÐèҪɾ³ýºóÃæµÄÄÚÈÝʱ£¬¿ÉÒÔÔڽű¾ÖÐʹÓá°q¡±
ÃüÁÍ˳öÃüÁ¡£ÔÚ´¦Àí´óµÄÎļþʱ£¬Õâ»á½ÚÊ¡´óÁ¿Ê±¼ä¡£Òò´Ë£º

   sed -n '45,50p' filename           # ÏÔʾµÚ45µ½50ÐÐ
   sed -n '51q;45,50p' filename       # Ò»Ñù£¬µ«¿ìµÃ¶à

Èç¹ûÄãÓÐÆäËûµÄµ¥Ðнű¾ÏëÓë´ó¼Ò·ÖÏí»òÕßÄã·¢ÏÖÁ˱¾ÎĵµÖдíÎóµÄµØ·½£¬Çë·¢µç
×ÓÓʼþ¸ø±¾ÎĵµµÄ×÷Õߣ¨Eric Pement£©¡£ÓʼþÖÐÇë¼ÇµÃÌṩÄãËùʹÓõÄsed°æ±¾¡¢
¸ÃsedËùÔËÐеIJÙ×÷ϵͳ¼°¶ÔÎÊÌâµÄÊʵ±ÃèÊö¡£±¾ÎÄËùÖ¸µÄµ¥Ðнű¾Ö¸ÃüÁîÐеij¤
¶ÈÔÚ65¸ö×Ö·û»ò65¸öÒÔϵÄsed½Å±¾¡²Òë×¢1¡³¡£±¾ÎĵµµÄ¸÷Öֽű¾ÊÇÓÉÒÔÏÂËùÁÐ×÷
ÕßËùд»òÌṩ£º

Al Aab                               # ½¨Á¢ÁË¡°seders¡±ÓʼþÁбí
Edgar Allen                          # Ðí¶à·½Ãæ
Yiorgos Adamopoulos                  # Ðí¶à·½Ãæ
Dale Dougherty                       # ¡¶sed & awk¡·×÷Õß
Carlos Duarte                        # ¡¶do it with sed¡·×÷Õß
Eric Pement                          # ±¾ÎĵµµÄ×÷Õß
Ken Pizzini                          # GNU sed v3.02 µÄ×÷Õß
S.G. Ravenhall                       # È¥html±êÇ©½Å±¾
Greg Ubben                           # ÓÐÖî¶à¹±Ïײ¢ÌṩÁËÐí¶à°ïÖú
-------------------------------------------------------------------------

Òë×¢1£º´ó²¿·ÖÇé¿öÏ£¬sed½Å±¾ÎÞÂ۶೤¶¼ÄÜд³Éµ¥ÐеÄÐÎʽ£¨Í¨¹ý`-e'Ñ¡ÏîºÍ`;'
ºÅ£©¨D¨DÖ»ÒªÃüÁî½âÊÍÆ÷Ö§³Ö£¬ËùÒÔÕâÀï˵µÄµ¥Ðнű¾³ýÁËÄÜд³ÉÒ»Ðл¹¶Ô³¤¶ÈÓÐ
ËùÏÞÖÆ¡£ÒòΪÕâЩµ¥Ðнű¾µÄÒâÒå²»ÔÚÓÚËüÃÇÊÇÒÔµ¥ÐеÄÐÎʽ³öÏÖ¡£¶øÊÇÈÃÓû§ÄÜ
·½±ãµØÔÚÃüÁîÐÐÖÐʹÓÃÕâЩ½ô´ÕµÄ½Å±¾²ÅÊÇÆäÒâÒåËùÔÚ¡£

yf_lw ·¢±íÓÚ 2006-4-8 09:14

ÕæÊǺÃÌù, ¶¥

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.