⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch28_12.htm

📁 the unix power tools
💻 HTM
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 28] 28.12 Comparing Two Files with comm </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly &amp; Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:44:50Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-260-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch28_01.htm"TITLE="28. Comparing Files"><LINKREL="prev"HREF="ch28_11.htm"TITLE="28.11 cmp and diff "><LINKREL="next"HREF="ch28_13.htm"TITLE="28.13 make Isn't Just for Programmers! "></HEAD><BODYBGCOLOR="#FFFFFF"TEXT="#000000"><DIVCLASS="htmlnav"><H1><IMGSRC="gifs/smbanner.gif"ALT="UNIX Power Tools"USEMAP="#srchmap"BORDER="0"></H1><MAPNAME="srchmap"><AREASHAPE="RECT"COORDS="0,0,466,58"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="467,0,514,18"HREF="jobjects/fsearch.htm"ALT="Search this book"></MAP><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch28_11.htm"TITLE="28.11 cmp and diff "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 28.11 cmp and diff "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 28<BR>Comparing Files</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch28_13.htm"TITLE="28.13 make Isn't Just for Programmers! "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 28.13 make Isn't Just for Programmers! "BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-2710">28.12 Comparing Two Files with comm </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="UPT-ART-2710-IX-COMM-COMMAND"></A><ACLASS="indexterm"NAME="UPT-ART-2710-IX-COMPARING-FILES-COMM-COMMAND"></A>The <EMCLASS="emphasis">comm</EM> command can tell you what information is common to two lists,and what information appears uniquely in one list or the other.For example, let's say you're compiling information on the favorite moviesof critics Siskel and Ebert. The movies are listed in separate files(and must be<SPANCLASS="link">sorted (<ACLASS="linkend"HREF="ch36_01.htm#UPT-ART-7640"TITLE="Putting Things in Order ">36.1</A>)</SPAN>-if they aren't sorted, the <SPANCLASS="link"><CODECLASS="replaceable"><I>!</I></CODE> script (<ACLASS="linkend"HREF="ch09_18.htm"TITLE="Process Substitution ">9.18</A>)</SPAN>will help).For the sake of illustration, assume each list isshort:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>cat siskel</B></CODE>Citizen KaneHalloween VINinja IIIRambo IIStar Trek VZelig% <CODECLASS="userinput"><B>cat ebert</B></CODE>Cat PeopleCitizen KaneMy Life as a DogQZZelig</PRE></BLOCKQUOTE></P><PCLASS="para">&#13;To compare the favorite movies of your favorite critics, type:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>comm siskel ebert</B></CODE>                  Cat People                                         Citizen KaneHalloween VI                  My Life as a DogNinja III                  QRambo IIStar Trek V                  Z                                         Zelig</PRE></BLOCKQUOTE></P><PCLASS="para">Column 1 shows the movies that only Siskel likes; Column 2 shows those thatonly Ebert likes; and Column 3 shows the movies that they both like.You can suppress one or more columns of output by specifying that column as acommand-line option. For example, to suppress Columns 1 and 2 (displaying onlythe movies <EMCLASS="emphasis">both</EM> critics like), you would type:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>comm -12 siskel ebert</B></CODE>Citizen KaneZelig</PRE></BLOCKQUOTE></P><PCLASS="para">As another example, say you've just received a new software release (Release 4),and it's your job to figure out which library functions have been added so thatthey can be documented along with the old ones.Let's assume you already have a list of the Release 3 functions(<EMCLASS="emphasis">r3_list</EM>) and a list of the Release 4 functions (<EMCLASS="emphasis">r4_list</EM>).(If you didn't, you could create them by changing to the directory thathas the function manual pages, listing the files with <EMCLASS="emphasis">ls</EM>, and savingeach list to a file.) In the listsbelow,we've used letters of the alphabet to represent the functions:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>cat r3_list</B></CODE>bcdfgh% <CODECLASS="userinput"><B>cat r4_list</B></CODE>abcdef</PRE></BLOCKQUOTE></P><PCLASS="para">You can now use the <EMCLASS="emphasis">comm</EM> command to answer several questions you mighthave:</P><ULCLASS="itemizedlist"><LICLASS="listitem"><PCLASS="para">Which functions are new to Release 4? Answer:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>comm -13 r3_list r4_list    </B></CODE><EMCLASS="emphasis">Show 2nd column, which is &quot;Release 4 only&quot;</EM> ae</PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">Which Release 3 functions have been dropped in Release 4? Answer:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>comm -23 r3_list r4_list    </B></CODE><EMCLASS="emphasis">Show 1st column, which is &quot;Release 3 only&quot;</EM> gh</PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">Which Release 3 functions have been retained in Release 4? Answer:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>comm -12 r3_list r4_list    </B></CODE><EMCLASS="emphasis">Show 3rd column, which is &quot;common functions&quot;</EM> bcdf</PRE></BLOCKQUOTE></P></LI></UL><PCLASS="para">You can create partial lists by saving the above output to three separate files.</P><PCLASS="para"><EMCLASS="emphasis">comm</EM> can only compare sorted files.If you can't sort the files, look at the trick in article<ACLASS="xref"HREF="ch02_14.htm"TITLE="motd.diff: Show New Lines in Login Messages">2.14</A>:&nbsp;using <EMCLASS="emphasis">diff</EM> and <EMCLASS="emphasis">grep</EM>.</P><ACLASS="indexterm"NAME="AUTOID-31603"></A><ACLASS="indexterm"NAME="AUTOID-31604"></A><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">DG</SPAN></P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch28_11.htm"TITLE="28.11 cmp and diff "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 28.11 cmp and diff "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="book"HREF="index.htm"TITLE="UNIX Power Tools"><IMGSRC="gifs/txthome.gif"SRC="gifs/txthome.gif"ALT="UNIX Power Tools"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch28_13.htm"TITLE="28.13 make Isn't Just for Programmers! "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 28.13 make Isn't Just for Programmers! "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">28.11 cmp and diff </TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="index"HREF="index/idx_0.htm"TITLE="Book Index"><IMGSRC="gifs/index.gif"SRC="gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172">28.13 make Isn't Just for Programmers! </TD></TR></TABLE><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><IMGSRC="gifs/smnavbar.gif"SRC="gifs/smnavbar.gif"USEMAP="#map"BORDER="0"ALT="The UNIX CD Bookshelf Navigation"><MAPNAME="map"><AREASHAPE="RECT"COORDS="0,0,73,21"HREF="../index.htm"ALT="The UNIX CD Bookshelf"><AREASHAPE="RECT"COORDS="74,0,163,21"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="164,0,257,21"HREF="../unixnut/index.htm"ALT="UNIX in a Nutshell"><AREASHAPE="RECT"COORDS="258,0,321,21"HREF="../vi/index.htm"ALT="Learning the vi Editor"><AREASHAPE="RECT"COORDS="322,0,378,21"HREF="../sedawk/index.htm"ALT="sed &amp; awk"><AREASHAPE="RECT"COORDS="379,0,438,21"HREF="../ksh/index.htm"ALT="Learning the Korn Shell"><AREASHAPE="RECT"COORDS="439,0,514,21"HREF="../lrnunix/index.htm"ALT="Learning the UNIX Operating System"></MAP></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -