锘??xml version="1.0" encoding="utf-8" standalone="yes"?>69视频在线观看,九九精品视频在线看,精品成人免费http://www.aygfsteel.com/bluestone2006/zh-cnSun, 27 Jul 2025 14:09:02 GMTSun, 27 Jul 2025 14:09:02 GMT60鍒╃敤鍥炶皟綆€鍖朖DBC緙栫▼http://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65490.htmlbluestonebluestoneThu, 24 Aug 2006 04:38:00 GMThttp://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65490.htmlhttp://www.aygfsteel.com/bluestone2006/comments/65490.htmlhttp://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65490.html#Feedback0http://www.aygfsteel.com/bluestone2006/comments/commentRss/65490.htmlhttp://www.aygfsteel.com/bluestone2006/services/trackbacks/65490.html 鍒╃敤鍥炶皟綆€鍖朖DBC緙栫▼

綆€鍗曠湅浜嗕竴涓媠pring 鐨刯dbc鏀寔錛岀幇鍦ㄥ張瑕佺洿鎺ョ敤鍒癹dbc錛屾兂鎯沖氨鏄棝鑻︺€備簬鏄弬鑰冧簡spring錛岃嚜宸卞啓浜嗕竴浜涚畝鍗曠殑java灝佽綾繪潵綆€鍖栫紪紼嬨€?br />


搴熻瘽灝戣錛屾垜榪欓噷灝辯敤浠g爜鏉ヤ唬璦€鍚э紝鐪嬬湅鎬庢牱綆€鍖栨垜浠殑JDBC緙栫▼錛屽彲浠ュ拰浠ュ墠榪涜瀵規瘮銆?br />


(1錛?JdbcTemplate銆?

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


import javax.sql.DataSource;


import org.winter.util.DBUtil;


/**
聽* a simple JDBC template 妯′豢spring鐨凧dbcTemplate
聽*
聽* @author bluestone
聽* @version 1.0 2006-8-8
聽*
聽*/
public class JdbcTemplate {


聽private DataSource dataSource = null;


聽public JdbcTemplate(DataSource ds) {
聽聽this.dataSource = ds;
聽}


/**
聽 * 鎵ц鏇存柊鎿嶄綔
聽 *
聽 * @param sql
聽 * @param setter
聽 * @return
聽 * @throws SQLException
聽 */
聽public int update(String sql, PreparedStatementSetter setter)
聽聽聽throws SQLException {
聽聽Connection conn = null;
聽聽reparedStatement ps = null;
聽聽try {
聽聽聽conn = dataSource.getConnection();
聽聽聽ps = conn.prepareStatement(sql);
聽聽聽setter.setValues(ps);
聽聽聽return ps.executeUpdate();
聽聽} finally {
聽聽聽DBUtil.colseConnection(conn, ps, null);
聽聽}
聽}


聽/**
聽 *
聽 * @param sql
聽 * @return
聽 * @throws SQLException
聽 */
聽public boolean execute(String sql) throws SQLException {
聽聽Connection conn = null;
聽聽Statement stmt = null;
聽聽try {
聽聽聽conn = dataSource.getConnection();
聽聽聽stmt = conn.createStatement();
聽聽聽return stmt.execute(sql);
聽聽} finally {
聽聽聽DBUtil.colseConnection(conn, stmt, null);
聽聽}
聽}


聽/**
聽 *
聽 * @param sql
聽 * @param setter
聽 * @param extractor
聽 * @return
聽 * @throws SQLException
聽 */
聽public Object query(String sql, PreparedStatementSetter setter,
聽聽聽ResultSetExtractor extractor) throws SQLException {
聽聽Connection conn = null;
聽聽reparedStatement ps = null;
聽聽ResultSet rs = null;
聽聽try {
聽聽聽conn = dataSource.getConnection();
聽聽聽ps = conn.prepareStatement(sql);
聽聽聽setter.setValues(ps);
聽聽聽rs = ps.executeQuery();
聽聽聽return extractor.extractData(rs);
聽聽} finally {
聽聽聽DBUtil.colseConnection(conn, ps, rs);
聽聽}
聽}


聽// .........................
}


(2)PreparedStatementSetter


public interface PreparedStatementSetter {
聽void setValues(PreparedStatement ps) throws SQLException;
}


(3)聽 ResultSetExtractor


public interface ResultSetExtractor {
聽Object extractData(ResultSet rs) throws SQLException;
}



(4) 鍙互鍙傝€僺pring鑷繁瀹氫箟鍏朵粬鎺ュ彛銆傘€傘€?br />


鐢ㄤ簡榪欎簺杈呭姪綾伙紝鎴戜滑灝卞彲浠ュ儚鐢╯pring閭f牱緙栫▼浜嗭紙褰撶劧榪欏彧鑳界敤鍦ㄥ浜嬪姟瑕佹眰涓嶉珮鐨勫簲鐢ㄧ幆澧冧腑錛夈€傜湅鐪嬫€庝箞浣跨敤錛?br />



private JdbcTemplate template;


聽public JobManageDao() throws BusinessException {
聽聽try {
聽聽聽template = new JdbcTemplate(DBHelper.getDataSource());
聽聽} catch (NamingException e) {
聽聽聽throw new BusinessException(e);
聽聽}
聽}


public long saveJobInfo(final JobInfo info) throws BusinessException {
聽聽final long id = IdGenerator.getIdLong();
聽聽try {
聽聽聽int j = template.update(INSERT_JOB_SQL, new PreparedStatementSetter() {


聽聽public void setValues(PreparedStatement ps) throws SQLException {
聽聽聽聽聽int i = 1;
聽聽聽聽聽ps.setLong(i++, id);


聽聽 //......


聽聽聽}
聽聽聽});
聽聽聽聽聽 return j > 0 ? id : 0L;
聽聽} catch (SQLException e) {
聽聽聽聽 聽throw new BusinessException(e);
聽聽}
聽}



bluestone 2006-08-24 12:38 鍙戣〃璇勮
]]>
鑰冭檻鐢ㄤ唬鐮佹潵鐢熸垚浠g爜http://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65489.htmlbluestonebluestoneThu, 24 Aug 2006 04:37:00 GMThttp://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65489.htmlhttp://www.aygfsteel.com/bluestone2006/comments/65489.htmlhttp://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65489.html#Feedback1http://www.aygfsteel.com/bluestone2006/comments/commentRss/65489.htmlhttp://www.aygfsteel.com/bluestone2006/services/trackbacks/65489.html聽聽聽聽聽聽聽聽濡傛灉娌℃湁鐢∣RM宸ュ叿錛岃繖浜涘張涓嶈兘鐪佷簡涓嶅啓銆備簬鏄垜鑰冭檻鐢ㄤ唬鐮佹潵鐢熸垚榪欎簺sql 鍜?setXXX鍙奼etXXX鏂規硶銆?/p>

聽聽聽聽聽聽聽 鐢熸垚浠g爜鏈夎澶氭柟娉曪紝姣斿鍙互鐢ㄨ剼鏈璦€錛堜釜浜哄枩嬈㈢敤perl錛夛紝涔熷彲浠ョ敤妯℃澘鎶€鏈€傚彂鐜癹ava閲岄潰宸茬粡鏈夊緢澶氭ā鏉挎妧鏈彲浠ョ洿鎺ヤ嬌鐢ㄤ簡錛屾瘮濡倂elocity銆乫reemaker絳夈€傛垜涓€寮€濮嬫槸鐩存帴鐢╬erl鏉ョ敓鎴愪唬鐮佺殑錛屾柟娉曟瘮杈冨師濮嬶紝灝辨槸瀛楃涓叉嫾鍑戝湪涓€璧楓€?鍚庢潵鍙戠幇鏈夎澶氱殑妯℃澘鎶€鏈彲浠ュ埄鐢ㄣ€傜幇鍦ㄦ墦綆楃敤velocity鏉ョ敓鎴愪唬鐮併€傝涓嶅畾鍙互鐩存帴鐢熸垚DAO銆丅iz銆丅ean銆乆ML絳変竴澶у爢涓滆タ錛屽懙鍛點€傜瓑鏈夌┖瑕佸ソ濂界爺絀朵竴涓嬨€?/p>

bluestone 2006-08-24 12:37 鍙戣〃璇勮
]]>
request鍙傛暟鐨勮嚜鍔ㄥ~鍏?/title><link>http://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65488.html</link><dc:creator>bluestone</dc:creator><author>bluestone</author><pubDate>Thu, 24 Aug 2006 04:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65488.html</guid><wfw:comment>http://www.aygfsteel.com/bluestone2006/comments/65488.html</wfw:comment><comments>http://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65488.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/bluestone2006/comments/commentRss/65488.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/bluestone2006/services/trackbacks/65488.html</trackback:ping><description><![CDATA[鍦╦sp欏甸潰錛屼竴涓〃鍗曞鏋滃瓧孌靛緢澶氱殑璇濓紝瑕佸啓寰堝request.getParameter(name)涔嬬被鐨勪唬鐮侊紝濡傛灉鐢╳eb framework鐨勮瘽錛屽垯鍙互鍏嶅幓鍐欒繖浜涗唬鐮佺殑楹葷儲銆備絾濡傛灉涓嶇敤framework鏄惁涔熷彲浠ヨ揪鍒板弬鏁拌嚜鍔ㄥ~鍏呯殑鍔熻兘鍛紵 絳旀鏄偗瀹氱殑銆?br /><p>聽聽聽 涓嬮潰鏄垜鍦ㄥ氨涓氱綉閲嶆瀯鏃剁敤鍒扮殑涓€涓猨ava綾伙紝鍏朵腑灝辨槸瀵笲eanUtils榪涜浜嗙畝鍗曠殑灝佽銆?br /></p><p><font color="magenta"><strong>聽聽聽<font color="green">import java.sql.Date;<br />聽聽聽import java.util.Map;</font></strong></font></p><br /><p><strong><font color="green">聽聽 import org.apache.commons.beanutils.BeanUtils;<br />聽聽 import org.apache.commons.beanutils.ConvertUtils;<br />聽聽 import org.apache.commons.beanutils.converters.SqlDateConverter;</font></strong><br /></p><p><strong><font color="green">聽聽 public class NullSafeBeanUtils {<br />聽聽 </font></strong><br /></p><p><strong><font color="green">聽聽 public final static String EMPTY_STRING = "";<br />聽<br />聽聽 public static boolean isNull(Object obj) {<br />聽聽聽聽聽聽 return obj == null;<br />聽聽 }</font></strong><br /></p><p><strong><font color="green">聽聽 public static String getProperty(Object bean, String property) {<br />聽聽聽聽聽 聽if (bean == null) {<br />聽聽聽聽聽聽聽聽聽聽 聽return EMPTY_STRING;<br />聽聽聽聽聽 聽}<br />聽聽聽 聽try {<br />聽聽聽聽聽聽聽聽 聽String str = BeanUtils.getProperty(bean, property);<br />聽聽聽聽聽聽聽聽 聽if (str == null) {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽 return EMPTY_STRING;<br />聽聽聽聽聽聽聽 聽}<br />聽聽聽聽聽聽聽 return str;<br />聽聽聽聽 } catch (Exception e) {<br />聽聽聽聽聽聽聽 聽return EMPTY_STRING;<br />聽聽 }<br />聽 }</font></strong><br /></p><p><strong><font color="green">聽聽public static void populate(Object bean, Map props) {<br />聽聽聽 聽if (bean == null) {<br />聽聽聽聽聽聽聽 return;<br />聽聽聽聽 }<br />聽聽 聽try {<br />聽聽聽聽 SqlDateConverter con = new SqlDateConverter(new Date(System.currentTimeMillis()));<br />聽聽聽聽聽 ConvertUtils.register(con, java.sql.Date.class);<br />聽聽聽聽聽 BeanUtils.populate(bean, props);<br />聽聽 } catch (Exception e) {<br />聽聽聽 聽e.printStackTrace();<br />聽聽 }<br />聽}<br />聽//聽姝ゅ鐪佺暐浜嗕竴浜涘叾浠栦唬鐮?br />聽}</font></strong></p><br /><p><strong><font color="#008000"></font></strong>聽</p><br /><p><font color="black">聽聽聽 鍦ㄨ繖閲岋紝poplulate鏂規硶灝辨槸鎴戠敤鏉ヨ嚜鍔ㄥ~鍏呭弬鏁扮殑銆傝瀹炵幇鑷姩濉厖錛屽彧闇€綆€鍗曡皟鐢ㄦ鏂規硶灝辮浜嗐€傜湅涓€涓緥瀛愶細</font></p><br /><p>聽聽聽 JobExperience jobExp = new JobExperience();<br /></p><p>聽聽聽 NullSafeBeanUtils.populate(jobExp, request.getParameterMap());</p><br /><p>聽聽 鏄笉鏄畝鍗曚簡璁稿錛熻娉ㄦ剰鐨勬槸琛ㄥ崟鐨勫悇杈撳叆瀛楁鍚嶈鍜宐ean鐨勫悇灞炴€у悕瀵瑰簲鎵嶈兘鑷姩濉厖銆傚彟澶朜ullSafeBeanUtils 鐨刧etProperty鏂規硶涔熷緢鏈夌敤錛屽彲浠ラ伩鍏嶅啓</p><p>聽聽 if (bean != null) {</p><p>聽聽聽聽聽 yyy = bean.getXXX()錛濓紳null?"":bean.getXXX()</p><p>聽聽聽} </p><p>聽聽 榪欐牱鐨勪唬鐮侊紝鐩存帴鍐橬ullSafeBeanUtils.getProperty(bean, "XXX")灝卞彲浠ヤ簡銆?br /></p><img src ="http://www.aygfsteel.com/bluestone2006/aggbug/65488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/bluestone2006/" target="_blank">bluestone</a> 2006-08-24 12:35 <a href="http://www.aygfsteel.com/bluestone2006/archive/2006/08/24/65488.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>uniq manual http://www.aygfsteel.com/bluestone2006/archive/2006/06/02/49923.htmlbluestonebluestoneFri, 02 Jun 2006 05:46:00 GMThttp://www.aygfsteel.com/bluestone2006/archive/2006/06/02/49923.htmlhttp://www.aygfsteel.com/bluestone2006/comments/49923.htmlhttp://www.aygfsteel.com/bluestone2006/archive/2006/06/02/49923.html#Feedback0http://www.aygfsteel.com/bluestone2006/comments/commentRss/49923.htmlhttp://www.aygfsteel.com/bluestone2006/services/trackbacks/49923.htmlUNIQ(1)聽聽聽聽User Commands聽聽聽聽聽聽聽聽 UNIQ(1)

NAME
聽聽聽聽聽聽 uniq - remove duplicate lines from a sorted file
SYNOPSIS
聽聽聽聽聽聽 uniq [OPTION]... [INPUT [OUTPUT]]

DESCRIPTION
聽聽聽聽聽聽 Discard all but one of successive identical lines from INPUT (or stan-
聽聽聽聽聽聽 dard input), writing to OUTPUT (or standard output).

聽聽聽聽聽聽 Mandatory arguments to long options are mandatory聽 for聽 short聽 options
聽聽聽聽聽聽 too.

聽聽聽聽聽聽 -c, --count
聽聽聽聽聽聽 prefix lines by the number of occurrences

聽聽聽聽聽聽 -d, --repeated
聽聽聽聽聽聽 only print duplicate lines

聽聽聽聽聽聽 -D, --all-repeated[=delimit-method] print all duplicate lines
聽聽聽聽聽聽 delimit-method={none(default),prepend,separate}聽 Delimiting聽 is
聽聽聽聽聽聽 done with blank lines.

聽聽聽聽聽聽 -f, --skip-fields=N
聽聽聽聽聽聽 avoid comparing the first N fields

聽聽聽聽聽聽 -i, --ignore-case
聽聽聽聽聽聽 ignore differences in case when comparing

聽聽聽聽聽聽 -s, --skip-chars=N
聽聽聽聽聽聽 avoid comparing the first N characters

聽聽聽聽聽聽 -u, --unique
聽聽聽聽聽聽 only print unique lines

聽聽聽聽聽聽 -w, --check-chars=N
聽聽聽聽聽聽 compare no more than N characters in lines

聽聽聽聽聽聽 --help display this help and exit

聽聽聽聽聽聽 --version
聽聽聽聽聽聽 output version information and exit

聽聽聽聽聽聽 A field is聽 a聽 run聽 of聽 whitespace,聽 then聽 non-whitespace聽 characters.
聽聽聽聽聽聽 Fields are skipped before chars.

AUTHOR
聽聽聽聽聽聽 Written by Richard Stallman and David MacKenzie.

REPORTING BUGS
聽聽聽聽聽聽 Report bugs to <bug-coreutils@gnu.org>.

COPYRIGHT
聽聽聽聽聽聽 Copyright 漏 2004 Free Software Foundation, Inc.
聽聽聽聽聽聽 This聽 is聽 free software; see the source for copying conditions.聽There
聽聽聽聽聽聽 is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU-
聽聽聽聽聽聽 LAR PURPOSE.

SEE ALSO
聽聽聽聽聽聽 The full documentation for uniq is maintained as a Texinfo manual.聽 If
聽聽聽聽聽聽 the info and uniq programs are properly installed at聽 your聽 site,聽 the
聽聽聽聽聽聽 command

聽聽聽聽聽聽 info coreutils uniq

聽聽聽聽聽聽 should give you access to the complete manual.



bluestone 2006-06-02 13:46 鍙戣〃璇勮
]]>
awk璇﹁В錛坒rom ChinaUnix.net)http://www.aygfsteel.com/bluestone2006/archive/2006/06/01/49561.htmlbluestonebluestoneThu, 01 Jun 2006 06:11:00 GMThttp://www.aygfsteel.com/bluestone2006/archive/2006/06/01/49561.htmlhttp://www.aygfsteel.com/bluestone2006/comments/49561.htmlhttp://www.aygfsteel.com/bluestone2006/archive/2006/06/01/49561.html#Feedback0http://www.aygfsteel.com/bluestone2006/comments/commentRss/49561.htmlhttp://www.aygfsteel.com/bluestone2006/services/trackbacks/49561.html 浣滆€咃細cicc 2005-02-03 15:53:59 鏉ヨ嚜錛歀inux鍏堢敓

聽聽聽 a w k鏄竴縐嶇▼搴忚璦€錛屽鏂囨。璧勬枡鐨勫鐞嗗叿鏈夊緢寮虹殑鍔熻兘銆俛wk 鍚嶇О鏄敱瀹冧笁涓渶鍒濊璁¤€呯殑濮撴皬鐨勭涓€涓瓧姣嶈€屽懡鍚嶇殑錛?Alfred V. Aho銆丳eter J. We i n b e rg e r銆丅rian W. Kernighan銆?br />聽聽聽a w k鏈€鍒濆湪1 9 7 7騫村畬鎴愩€? 9 8 5騫村彂琛ㄤ簡涓€涓柊鐗堟湰鐨刟 w k錛屽畠鐨勫姛鑳芥瘮鏃х増鏈寮轟簡涓嶅皯銆俛 w k鑳藉鐢ㄥ緢鐭殑紼嬪簭瀵規枃妗i噷鐨勮祫鏂欏仛淇敼銆佹瘮杈冦€佹彁鍙栥€佹墦鍗扮瓑澶勭悊銆傚鏋滀嬌鐢– 鎴朠 a s c a l絳夎璦€緙栧啓紼嬪簭瀹屾垚涓婅堪鐨勪換鍔′細鍗佸垎涓嶆柟渚胯€屼笖寰堣姳璐規椂闂達紝鎵€鍐欑殑紼嬪簭涔熶細寰堝ぇ銆?br />聽聽聽a w k涓嶄粎浠呮槸涓€涓紪紼嬭璦€錛屽畠榪樻槸L i n u x緋葷粺綆$悊鍛樺拰紼嬪簭鍛樼殑涓€涓笉鍙己灝戠殑宸ュ叿銆俛 w k璇█鏈韓鍗佸垎濂藉錛屾槗浜庢帉鎻★紝騫朵笖鐗瑰埆鐨勭伒媧匯€?br />聽聽聽gawk 鏄疓 N U璁″垝涓嬫墍鍋氱殑a w k錛実awk 鏈€鍒濆湪1 9 8 6騫村畬鎴愶紝涔嬪悗涓嶆柇鍦拌鏀硅繘銆佹洿鏂般€俫awk 鍖呭惈awk 鐨勬墍鏈夊姛鑳姐€?br />
6.1 gawk鐨勪富瑕佸姛鑳?br />
聽聽聽gawk 鐨勪富瑕佸姛鑳芥槸閽堝鏂囦歡鐨勬瘡涓€琛? l i n e )錛屼篃灝辨槸姣忎竴鏉¤褰曪紝鎼滃鎸囧畾鐨勬牸寮忋€傚綋鏌愪竴琛岀鍚堟寚瀹氱殑鏍煎紡鏃訛紝gawk 灝變細鍦ㄦ琛屾墽琛岃鎸囧畾鐨勫姩浣溿€俫awk 渚濇鏂瑰紡鑷姩澶勭悊杈撳叆鏂囦歡鐨勬瘡涓€琛岀洿鍒拌緭鍏ユ枃浠舵。妗堢粨鏉熴€?br />聽聽聽g a w k緇忓父鐢ㄥ湪濡備笅鐨勫嚑涓柟闈細
聽聽聽鈥?鏍規嵁瑕佹眰閫夋嫨鏂囦歡鐨勬煇鍑犺錛屽嚑鍒楁垨閮ㄥ垎瀛楁浠ヤ緵鏄劇ず杈撳嚭銆?br />聽聽聽鈥?鍒嗘瀽鏂囨。涓殑鏌愪竴涓瓧鍑虹幇鐨勯鐜囥€佷綅緗瓑銆?br />聽聽聽鈥?鏍規嵁鏌愪竴涓枃妗g殑淇℃伅鍑嗗鏍煎紡鍖栬緭鍑恒€?br />聽聽聽鈥?浠ヤ竴涓姛鑳藉崄鍒嗗己澶х殑鏂瑰紡榪囨護杈撳嚭鏂囨。銆?br />聽聽聽鈥?鏍規嵁鏂囨。涓殑鏁板€艱繘琛岃綆椼€?br />
6.2 濡備綍鎵цgawk紼嬪簭

聽聽聽鍩烘湰涓婃湁涓ょ鏂規硶鍙互鎵цg a w k紼嬪簭銆?br />聽聽聽濡傛灉gawk 紼嬪簭寰堢煭錛屽垯鍙互灝唃awk 鐩存帴鍐欏湪鍛戒護琛岋紝濡備笅鎵€紺猴細
聽聽聽聽聽聽gawk 'program' input-file1 input-file2 ...
聽聽聽
聽聽 鍏朵腑program 鍖呮嫭涓€浜沺attern 鍜宎 c t i o n銆?br />聽聽聽濡傛灉gawk 紼嬪簭杈冮暱錛岃緝涓烘柟渚跨殑鍋氭硶鏄皢gawk 紼嬪簭瀛樺湪涓€涓枃浠朵腑錛実awk 鐨勬牸寮忓涓嬫墍紺猴細
聽聽聽gawk -f program-file input-file1 input-file2 ...
聽聽聽gawk 紼嬪簭鐨勬枃浠朵笉姝竴涓椂錛屾墽琛実awk 鐨勬牸寮忓涓嬫墍紺猴細
聽聽聽
聽聽聽gawk -f program-file1 -f program-file2 ... input-file1 input-file2 ...

6.3 鏂囦歡銆佽褰曞拰瀛楁

聽聽聽涓€鑸儏鍐典笅錛実 a w k鍙互澶勭悊鏂囦歡涓殑鏁板€兼暟鎹紝浣嗕篃鍙互澶勭悊瀛楃涓蹭俊鎭€傚鏋滄暟鎹病鏈夊瓨鍌ㄥ湪鏂囦歡涓紝鍙互閫氳繃綆¢亾鍛戒護鍜屽叾浠栫殑閲嶅畾鍚戞柟娉曠粰g a w k鎻愪緵杈撳叆銆傚綋鐒訛紝 g a w k鍙兘澶勭悊鏂囨湰鏂囦歡錛圓 S C I I鐮佹枃浠訛級銆偮?!--StartFragment -->鐢佃瘽鍙風爜鏈氨鏄竴涓猤 a w k鍙互澶勭悊鐨勬枃浠剁殑綆€鍗曚緥瀛愩€傜數璇濆彿鐮佹湰鐢卞緢澶氭潯鐩粍鎴愶紝姣忎竴涓潯鐩兘鏈夊悓鏍風殑鏍煎紡錛氬銆佸悕銆佸湴鍧€銆佺數璇濆彿鐮併€傛瘡涓€涓潯鐩兘鏄寜瀛楁瘝欏哄簭鎺掑垪銆傚湪g a w k涓紝姣忎竴涓繖鏍風殑鏉$洰鍙仛涓€涓褰曘€傚畠鏄竴涓畬鏁寸殑鏁版嵁鐨勯泦鍚堛€備緥濡傦紝鐢佃瘽鍙風爜鏈腑鐨凷mith John榪欎釜鏉$洰錛屽寘鎷粬鐨勫湴鍧€鍜岀數璇濆彿鐮侊紝灝辨槸涓€鏉¤褰曘€?br />聽聽聽璁板綍涓殑姣忎竴欏瑰彨鍋氫竴涓瓧孌點€傚湪g a w k涓紝瀛楁鏄渶鍩烘湰鐨勫崟浣嶃€傚涓褰曠殑闆嗗悎緇勬垚浜嗕竴涓枃浠躲€?br />聽聽聽澶у鏁版儏鍐典笅錛屽瓧孌典箣闂寸敱涓€涓壒孌婄殑瀛楃鍒嗗紑錛屽儚絀烘牸銆乀A B銆佸垎鍙風瓑銆傝繖浜涘瓧絎﹀彨鍋氬瓧孌靛垎闅旂銆傝鐪嬩笅闈㈣繖涓? e t c / p a s s w d鏂囦歡錛?br />t p a r k e r ; t 3 6 s 6 2 h s h ; 5 0 1 ; 1 0 1 ; Tim Parker;/home/tparker;/bin/bash
etreijs;2ys639dj3h;502;101;Ed Tr e i j s ; / h o m e / e t r e i j s ; / b i n / t c s h
y c h o w ; 1 h 2 7 s j ; 5 0 3 ; 1 0 1 ; Yvonne Chow;/home/ychow;/bin/bash
聽聽聽浣犲彲浠ョ湅鍑? e t c / p a s s w d鏂囦歡浣跨敤鍒嗗彿浣滀負瀛楁鍒嗛殧絎︺€? e t c / p a s s w d鏂囦歡涓殑姣忎竴琛岄兘鍖呮嫭涓冧釜瀛楁錛氱敤鎴峰悕錛涘彛浠わ紱鐢ㄦ埛I D錛涘伐浣滅粍I D錛涙敞閲婏紱 h o m e鐩綍錛涘惎濮嬬殑澶栧3銆傚鏋滀綘鎯寵鏌ユ壘絎叚涓瓧孌碉紝鍙渶鏁拌繃浜斾釜鍒嗗彿鍗沖彲銆?br />聽聽聽浣嗚€冭檻鍒頒互涓嬬數璇濆彿鐮佹湰鐨勪緥瀛愶紝浣犲氨浼氬彂鐜頒竴浜涢棶棰橈細
Smith John 13 Wilson St. 555-1283
Smith John 2736 Artside Dr Apt 123 555-2736
Smith John 125 Westmount Cr 555-1726
聽聽聽铏界劧鎴戜滑鑳藉鍒嗚鯨鍑烘瘡涓褰曞寘鎷洓涓瓧孌碉紝浣唃 a w k鍗存棤鑳戒負鍔涖€傜數璇濆彿鐮佹湰浣跨敤絀烘牸浣滀負鍒嗛殧絎︼紝鎵€浠 a w k璁や負S m i t h鏄涓€涓瓧孌碉紝 John 鏄浜屼釜瀛楁錛? 3鏄涓変釜瀛楁錛屼緷嬈$被鎺ㄣ€傚氨g a w k鑰岃█錛屽鏋滅敤絀烘牸浣滀負瀛楁鍒嗛殧絎︾殑璇濓紝鍒欑涓€涓褰曟湁鍏釜瀛楁錛岃€岀浜屼釜璁板綍鏈夊叓涓瓧孌點€?br />聽聽聽鎵€浠ワ紝鎴戜滑蹇呴』鎵懼嚭涓€涓洿濂界殑瀛楁鍒嗛殧絎︺€備緥濡傦紝鍍忎笅闈竴鏍蜂嬌鐢ㄦ枩鏉犱綔涓哄瓧孌靛垎闅旂錛?br />Smith/John/13 Wilson St./555-1283
Smith/John/2736 Artside Dr/Apt/123/555-2736
Smith/John/125 Westmount Cr/555-1726
聽聽聽濡傛灉浣犳病鏈夋寚瀹氬叾浠栫殑瀛楃浣滀負瀛楁鍒嗛殧絎︼紝閭d箞g a w k灝嗙己鐪佸湴浣跨敤絀烘牸鎴朤A B浣滀負瀛楁鍒嗛殧絎︺€?br />
6.4 妯″紡鍜屽姩浣?br />
聽聽聽鍦╣ a w k璇█涓瘡涓€涓懡浠ら兘鐢變袱閮ㄥ垎緇勬垚錛氫竴涓ā寮忥紙 p a t t e r n錛夊拰涓€涓浉搴旂殑鍔ㄤ綔錛坅 c t i o n錛夈€傚彧瑕佹ā寮忕鍚堬紝g a w k灝變細鎵ц鐩稿簲鐨勫姩浣溿€傚叾涓ā寮忛儴鍒嗙敤涓や釜鏂滄潬鎷搗鏉ワ紝鑰屽姩浣滈儴鍒嗙敤涓€瀵硅姳鎷彿鎷搗鏉ャ€備緥濡傦細
/ p a t t e r n 1 / { a c t i o n 1 }
/ p a t t e r n 2 / { a c t i o n 2 }
/ p a t t e r n 3 / { a c t i o n 3 }
聽聽聽鎵€鏈夌殑g a w k紼嬪簭閮芥槸鐢辮繖鏍風殑涓€瀵瑰鐨勬ā寮忓拰鍔ㄤ綔緇勬垚鐨勩€傚叾涓ā寮忔垨鍔ㄤ綔閮借兘澶熻鐪佺暐錛屼絾鏄袱涓笉鑳藉悓鏃惰鐪佺暐銆傚鏋滄ā寮忚鐪佺暐錛屽垯瀵逛簬浣滀負杈撳叆鐨勬枃浠墮噷闈㈢殑姣忎竴琛岋紝鍔ㄤ綔閮戒細琚墽琛屻€傚鏋滃姩浣滆鐪佺暐錛屽垯緙虹渷鐨勫姩浣滆鎵ц錛屾棦鏄劇ず鍑烘墍鏈夌鍚堟ā寮忕殑杈撳叆琛岃€屼笉鍋氫換浣曠殑鏀瑰姩銆?br />聽聽聽涓嬮潰鏄竴涓畝鍗曠殑渚嬪瓙錛屽洜涓篻awk 紼嬪簭寰堢煭錛屾墍浠ュ皢gawk 紼嬪簭鐩存帴鍐欏湪澶栧3鍛戒護琛岋細
gawk '/tparker/' /etc/passwd

聽聽聽聽姝ょ▼搴忓湪涓婇潰鎻愬埌鐨? e t c / p a s s w d鏂囦歡涓鎵劇鍚坱 p a r k e r妯″紡鐨勮褰曞茍鏄劇ず錛堟渚嬩腑娌℃湁鍔ㄤ綔錛屾墍浠ョ己鐪佺殑鍔ㄤ綔琚墽琛岋級銆?br />聽聽聽璁╂垜浠啀鐪嬩竴涓緥瀛愶細
聽聽聽gawk '/UNIX/{print $2}' file2.data
聽聽聽姝ゅ懡浠ゅ皢閫愯鏌ユ壘f i l e 2 . d a t a鏂囦歡涓寘鍚玌 N I X鐨勮褰曪紝騫舵墦鍗拌繖浜涜褰曠殑絎簩涓瓧孌點€備綘涔熷彲浠ュ湪涓€涓懡浠や腑浣跨敤澶氫釜妯″紡鍜屽姩浣滃錛屼緥濡傦細
gawk '/scandal/{print $1} /rumor/{print $2}' gossip_file
聽聽聽姝ゅ懡浠ゆ悳绱㈡枃浠秅 o s s i p _ f i l e涓寘鎷瑂 c a n d a l鐨勮褰曪紝騫舵墦鍗扮涓€涓瓧孌點€傜劧鍚庡啀浠庡ご鎼滅儲g o s s i p _ f i l e涓寘鎷瑀 u m o r鐨勮褰曪紝騫舵墦鍗扮浜屼釜瀛楁銆?br />
6.5 姣旇緝榪愮畻鍜屾暟鍊艱繍綆?br />
聽聽聽g a w k鏈夊緢澶氭瘮杈冭繍綆楃錛屼笅闈㈠垪鍑洪噸瑕佺殑鍑犱釜錛?br />= = 鐩哥瓑
! = 涓嶇浉絳?br />> 澶т簬
< 灝忎簬
> = 澶т簬絳変簬
< = 灝忎簬絳変簬
聽聽聽渚嬪:聽聽gawk '$4 > 100' testfile
聽聽聽灝嗕細鏄劇ず鏂囦歡testfile 涓偅浜涚鍥涗釜瀛楁澶т簬1 0 0鐨勮褰曘€?br />聽聽聽涓嬭〃鍒楀嚭浜唃 a w k涓熀鏈殑鏁板€艱繍綆楃銆?br />聽聽聽榪愮畻絎﹁鏄庣ず渚?br />聽聽聽+ 鍔犳硶榪愮畻2+6
聽聽聽- 鍑忔硶榪愮畻6-3
聽聽聽* 涔樻硶榪愮畻2*5
聽聽聽/ 闄ゆ硶榪愮畻8/4
聽聽聽^ 涔樻柟榪愮畻3^2 (=9)
聽聽聽% 姹備綑鏁?%4 (=1)
聽聽聽渚嬪:{print $3/2} 鏄劇ず絎笁涓瓧孌佃2闄ょ殑緇撴灉銆?br />聽聽聽鍦╣ a w k涓紝榪愮畻絎︾殑浼樺厛鏉冨拰涓€鑸殑鏁板榪愮畻鐨勪紭鍏堟潈涓€鏍楓€備緥濡傦細{print $1+$2*$3}
聽聽聽鏄劇ず絎簩涓瓧孌靛拰絎笁涓瓧孌電浉涔橈紝鐒跺悗鍜岀涓€涓瓧孌電浉鍔犵殑緇撴灉銆?br />聽聽聽浣犱篃鍙互鐢ㄦ嫭鍙鋒敼鍙樹紭鍏堟搴忋€備緥濡傦細
聽聽聽{print ($1+$2)*$3}
聽聽聽鏄劇ず絎竴涓瓧孌靛拰絎簩涓瓧孌電浉鍔狅紝鐒跺悗鍜岀涓変釜瀛楁鐩鎬箻鐨勭粨鏋溿€?br />
6.6 鍐呴儴鍑芥暟

g a w k涓湁鍚勭鐨勫唴閮ㄥ嚱鏁幫紝鐜板湪浠嬬粛濡備笅錛毬?br />
6.6.1 闅忔満鏁板拰鏁板鍑芥暟

sqrt(x) 姹倄 鐨勫鉤鏂規牴
sin(x) 姹倄 鐨勬寮﹀嚱鏁?br />cos(x) 姹倄 鐨勪綑寮﹀嚱鏁?br />a t a n 2 ( x錛寉) 姹倄 / y鐨勪綑鍒囧嚱鏁?br />log(x) 姹倄 鐨勮嚜鐒跺鏁?br />exp(x) 姹倄 鐨別 嬈℃柟
int(x) 姹倄 鐨勬暣鏁伴儴鍒?br />rand() 姹? 鍜?涔嬮棿鐨勯殢鏈烘暟
srand(x) 灝唜 璁劇疆涓簉 a n d ( )鐨勭瀛愭暟

6.6.2 瀛楃涓茬殑鍐呴儴鍑芥暟

鈥?i n d e x ( i n錛宖ind) 鍦ㄥ瓧絎︿覆in 涓鎵懼瓧絎︿覆find 絎竴嬈″嚭鐜扮殑鍦版柟錛岃繑鍥炲€兼槸瀛楃涓瞗ind 鍑虹幇鍦ㄥ瓧絎︿覆in 閲岄潰鐨勪綅緗€傚鏋滃湪瀛楃涓瞚n 閲岄潰鎵句笉鍒板瓧絎︿覆f i n d錛屽垯榪斿洖鍊間負0銆?br />渚嬪錛?br />print index("peanut"錛? a n " )
鏄劇ず緇撴灉3銆?br />鈥?length(string) 姹傚嚭string 鏈夊嚑涓瓧絎︺€?br />渚嬪錛?br />l e n g t h ( " a b c d e " )
鏄劇ず緇撴灉5銆?br />鈥?m a t c h ( s t r i n g錛宺 e g e x p ) 鍦ㄥ瓧絎︿覆string 涓鎵劇鍚坮egexp 鐨勬渶闀褲€佹渶闈犲乏杈圭殑瀛愬瓧絎︿覆銆傝繑鍥炲€兼槸regexp 鍦╯tring 鐨勫紑濮嬩綅緗紝鍗砳 n d e x鍊箋€俶atch 鍑芥暟灝嗕細璁劇疆緋葷粺鍙橀噺R S TA RT 絳変簬i n d e x鐨勫€鹼紝緋葷粺鍙橀噺RLENGTH 絳変簬絎﹀悎鐨勫瓧絎︿釜鏁般€傚鏋滀笉絎﹀悎錛屽垯浼氳緗甊 S TA RT 涓?銆丷LENGTH 涓? 1銆?br />鈥?s p r i n t f ( f o r m a t錛宔 x p r e s s i o n 1錛? . . ) 鍜宲rintf 綾諱技錛屼絾鏄痵printf 騫朵笉鏄劇ず錛岃€屾槸榪斿洖瀛楃涓層€備緥濡傦細
sprintf("pi = %.2f (approx.)"錛? 2 / 7 )
榪斿洖鐨勫瓧絎︿覆涓簆i = 3.14 (approx.)
鈥?s u b ( r e g e x p錛宺 e p l a c e m e n t錛宼 a rg e t ) 鍦ㄥ瓧絎︿覆t a rget 涓鎵劇鍚坮egexp 鐨勬渶闀褲€佹渶闈犲乏鐨勫湴鏂癸紝浠ュ瓧涓瞨eplacement 浠f浛鏈€宸﹁竟鐨剅 e g e x p銆?br />渚嬪錛?br />str = "water錛寃 a t e r錛宔 v e r y w h e r e "
s u b ( / a t /錛?" i t h "錛宻 t r )
緇撴灉瀛楃涓瞫 t r浼氬彉鎴?br />w i t h e r錛寃 a t e r錛宔 v e r y w h e r e
鈥?g s u b ( r e g e x p錛宺 e p l a c e m e n t錛宼 a rget) 涓庡墠闈㈢殑s u b綾諱技銆傚湪瀛楃涓瞭 a rget 涓鎵劇鍚坮 e g e x p鐨勬墍鏈夊湴鏂癸紝浠ュ瓧絎︿覆replacement 浠f浛鎵€鏈夌殑r e g e x p銆備緥濡傦細
s t r = " w a t e r錛寃 a t e r錛宔 v e r y w h e r e "g s u b ( / a t /錛?" i t h "錛宻 t r )
緇撴灉瀛楃涓瞫 t r浼氬彉鎴?br />w i t h e r錛寃 i t h e r錛宔 v e r y w h e r e
鈥?s u b s t r ( s t r i n g錛宻 t a r t錛宭ength) 榪斿洖瀛楃涓瞫tring 鐨勫瓙瀛楃涓詫紝榪欎釜瀛愬瓧絎︿覆鐨勯暱搴︿負l e n g t h錛屼粠絎瑂tart 涓綅緗紑濮嬨€備緥濡傦細
s u b s t r ( " w a s h i n g t o n "錛?錛? )榪斿洖鍊間負i n g
濡傛灉娌℃湁length 錛屽垯榪斿洖鐨勫瓙瀛楃涓叉槸浠庣start 涓綅緗紑濮嬭嚦緇撴潫銆?br />渚嬪錛?br />s u b s t r ( " w a s h i n g t o n "錛? )
榪斿洖鍊間負i n g t o n銆?br />鈥?tolower(string) 灝嗗瓧絎︿覆s t r i n g鐨勫ぇ鍐欏瓧姣嶆敼涓哄皬鍐欏瓧姣嶃€?br />渚嬪錛?br />tolower("MiXeD cAsE 123")
榪斿洖鍊間負mixed case 123銆?br />鈥?toupper(string) 灝嗗瓧絎︿覆s t r i n g鐨勫皬鍐欏瓧姣嶆敼涓哄ぇ鍐欏瓧姣嶃€?br />渚嬪錛?br />toupper("MiXeD cAsE 123")
榪斿洖鍊間負MIXED CASE 123銆?br />
6.6.3 杈撳叆杈撳嚭鐨勫唴閮ㄥ嚱鏁?br />
鈥?close(filename) 灝嗚緭鍏ユ垨杈撳嚭鐨勬枃浠秄ilename 鍏抽棴銆?br />鈥?system(command) 姝ゅ嚱鏁板厑璁哥敤鎴鋒墽琛屾搷浣滅郴緇熺殑鎸囦護錛屾墽琛屽畬姣曞悗灝嗗洖鍒癵 a w k紼嬪簭銆備緥濡傦細
BEGIN {system("ls")}

6.7 瀛楃涓插拰鏁板瓧

瀛楃涓插氨鏄竴榪炰覆鐨勫瓧絎︼紝瀹冨彲浠ヨg a w k閫愬瓧鍦扮炕璇戙€傚瓧絎︿覆鐢ㄥ弻寮曞彿鎷搗鏉ャ€傛暟瀛椾笉鑳界敤鍙屽紩鍙鋒嫭璧鋒潵錛屽茍涓攇 a w k灝嗗畠褰撲綔涓€涓暟鍊箋€備緥濡傦細
gawk '$1 != "Tim" {print}' testfile
姝ゅ懡浠ゅ皢鏄劇ず絎竴涓瓧孌靛拰Ti m涓嶇浉鍚岀殑鎵€鏈夎褰曘€傚鏋滃懡浠や腑Ti m涓よ竟涓嶇敤鍙屽紩鍙鳳紝g a w k灝嗕笉鑳芥紜墽琛屻€傚啀濡傦細
gawk '$1 == "50" {print}' testfile
聽聽聽姝ゅ懡浠ゅ皢鏄劇ず鎵€鏈夌涓€涓瓧孌靛拰5 0榪欎釜瀛楃涓茬浉鍚岀殑璁板綍銆俫 a w k涓嶇絎竴瀛楁涓殑鏁板€肩殑澶у皬錛岃€屽彧鏄€愬瓧鍦版瘮杈冦€傝繖鏃訛紝瀛楃涓? 0鍜屾暟鍊? 0騫朵笉鐩哥瓑銆?br />
6.8 鏍煎紡鍖栬緭鍑?br />
聽聽聽鎴戜滑鍙互璁╁姩浣滄樉紺轟竴浜涙瘮杈冨鏉傜殑緇撴灉銆備緥濡傦細
gawk '$1 != "Tim" {print $1錛? 5錛? 6錛?2}' testfile
灝嗘樉紺簍 e s t f i l e鏂囦歡涓墍鏈夌涓€涓瓧孌靛拰Ti m涓嶇浉鍚岀殑璁板綍鐨勭涓€銆佺浜斻€佺鍏拰絎簩涓瓧孌點€傝繘涓€姝ワ紝浣犲彲浠ュ湪p r i n t鍔ㄤ綔涓姞鍏ュ瓧絎︿覆錛屼緥濡傦細
gawk '$1 != "Tim" {print "The entry for "錛? 1錛?is not Tim. "錛?2}' testfile
聽聽聽p r i n t鍔ㄤ綔鐨勬瘡涓€閮ㄥ垎鐢ㄩ€楀彿闅斿紑銆?br />聽聽聽鍊熺敤C璇█鐨勬牸寮忓寲杈撳嚭鎸囦護錛屽彲浠ヨg a w k鐨勮緭鍑哄艦寮忔洿涓哄鏍楓€傝繖鏃訛紝搴旇鐢╬ r i n t f鑰屼笉鏄痯 r i n t銆備緥濡傦細
{printf "%5s likes this language\n"錛? 2 }
p r i n t f涓殑%5s 閮ㄥ垎鍛婅瘔gawk 濡備綍鏍煎紡鍖栬緭鍑哄瓧絎︿覆錛屼篃灝辨槸杈撳嚭5涓瓧絎﹂暱銆傚畠鐨勫€肩敱printf 鐨勬渶鍚庨儴鍒嗘寚鍑猴紝鍦ㄦ鏄浜屼釜瀛楁銆俓 n鏄洖杞︽崲琛岀銆傚鏋滅浜屼釜瀛楁涓瓨鍌ㄧ殑鏄漢鍚嶏紝鍒欒緭鍑虹粨鏋滃ぇ鑷村涓嬶細
Tim likes this language
G e o ff likes this language
Mike likes this language
Joe likes this language
聽聽聽gawk 璇█鏀寔鐨勫叾浠栨牸寮忔帶鍒剁鍙峰涓嬶細
鈥?c 濡傛灉鏄瓧絎︿覆錛屽垯鏄劇ず絎竴涓瓧絎︼紱濡傛灉鏄暣鏁幫紝鍒欏皢鏁板瓧浠SCII 瀛楃鐨勫艦寮忔樉紺恒€?br />渚嬪錛?br />printf 鈥? c鈥濓紝6 5
緇撴灉灝嗘樉紺哄瓧姣岮銆?br />鈥?d 鏄劇ず鍗佽繘鍒剁殑鏁存暟銆?br />鈥?i 鏄劇ず鍗佽繘鍒剁殑鏁存暟銆?br />鈥?e 灝嗘誕鐐規暟浠ョ瀛﹁鏁版硶鐨勫艦寮忔樉紺恒€?br />渚嬪錛?br />print 鈥? 4 . 3 e鈥濓紝1 9 5 0
緇撴灉灝嗘樉紺? . 9 5 0 e + 0 3銆?br />鈥?f 灝嗘暟瀛椾互嫻偣鐨勫艦寮忔樉紺恒€?br />鈥?g 灝嗘暟瀛椾互縐戝璁版暟娉曠殑褰㈠紡鎴栨誕鐐圭殑褰㈠紡鏄劇ず銆傛暟瀛楃殑緇濆鍊煎鏋滃ぇ浜庣瓑浜? . 0 0 0 1鍒?br />浠ユ誕鐐圭殑褰㈠紡鏄劇ず錛屽惁鍒欎互縐戝璁版暟娉曠殑褰㈠紡鏄劇ず銆?br />鈥?o 鏄劇ず鏃犵鍙風殑鍏繘鍒舵暣鏁般€?br />鈥?s 鏄劇ず涓€涓瓧絎︿覆銆?br />鈥?x 鏄劇ず鏃犵鍙風殑鍗佸叚榪涘埗鏁存暟銆? 0鑷? 5浠鑷砯琛ㄧず銆?br />鈥?X 鏄劇ず鏃犵鍙風殑鍗佸叚榪涘埗鏁存暟銆? 0鑷? 5浠鑷矲琛ㄧず銆?br />鈥?% 瀹冨茍涓嶆槸鐪熸鐨勬牸寮忔帶鍒跺瓧絎︼紝% %灝嗘樉紺?銆?br />褰撲綘浣跨敤榪欎簺鏍煎紡鎺у埗瀛楃鏃訛紝浣犲彲浠ュ湪鎺у埗瀛楃鍓嶇粰鍑烘暟瀛楋紝浠ヨ〃紺轟綘灝嗙敤鐨勫嚑浣嶆垨鍑犱釜瀛楃銆備緥濡傦紝6 d琛ㄧず涓€涓暣鏁版湁6浣嶃€傚啀璇風湅涓嬮潰鐨勪緥瀛愶細
{printf "%5s works for %5s and earns %2d an hour"錛? 1錛? 2錛? 3 }
灝嗕細浜х敓綾諱技濡備笅鐨勮緭鍑猴細
Joe works for Mike and earns 12 an hour
褰撳鐞嗘暟鎹椂錛屼綘鍙互鎸囧畾鏁版嵁鐨勭簿紜綅鏁?br />{printf "%5s earns $%.2f an hour"錛? 3錛? 6 }
鍏惰緭鍑哄皢綾諱技浜庯細
Joe earns $12.17 an hour

浣犱篃鍙互浣跨敤涓€浜涙崲鐮佹帶鍒剁鏍煎紡鍖栨暣琛岀殑杈撳嚭銆備箣鎵€浠ュ彨鍋氭崲鐮佹帶鍒剁錛屾槸鍥犱負g a w k瀵硅繖浜涚鍙鋒湁鐗規畩鐨勮В閲娿€備笅闈㈠垪鍑哄父鐢ㄧ殑鎹㈢爜鎺у埗絎︼細

\a 璀﹀憡鎴栧搷閾冨瓧絎︺€?br />\b 鍚庨€€涓€鏍箋€?br />\f 鎹㈤〉銆?br />\n 鎹㈣銆?br />\r 鍥炶濺銆?br />\t Ta b銆?br />\v 鍨傜洿鐨則 a b銆?br />
6.9 鏀瑰彉瀛楁鍒嗛殧絎?br />
聽聽聽鍦╣ a w k涓紝緙虹渷鐨勫瓧孌靛垎闅旂涓€鑸槸絀烘牸絎︽垨TA B銆備絾浣犲彲浠ュ湪鍛戒護琛屼嬌鐢? F閫夐」鏀瑰彉瀛楃鍒嗛殧絎︼紝鍙渶鍦? F鍚庨潰璺熺潃浣犳兂鐢ㄧ殑鍒嗛殧絎﹀嵆鍙€?br />gawk -F" ;"'/tparker/{print}' /etc/passwd
聽聽聽鍦ㄦ渚嬩腑錛屼綘灝嗗瓧絎﹀垎闅旂璁劇疆鎴愬垎鍙楓€傛敞鎰忥細 - F蹇呴』鏄ぇ鍐欑殑錛岃€屼笖蹇呴』鍦ㄧ涓€涓紩鍙蜂箣鍓嶃€?br />
6.10 鍏冨瓧絎?br />
g a w k璇█鍦ㄦ牸寮忓尮閰嶆椂鏈夊叾鐗規畩鐨勮鍒欍€備緥濡傦紝 c a t鑳藉鍜岃褰曚腑浠諱綍浣嶇疆鏈夎繖涓変釜瀛楃鐨勫瓧孌靛尮閰嶃€備絾鏈夋椂浣犻渶瑕佷竴浜涙洿涓虹壒孌婄殑鍖歸厤銆傚鏋滀綘鎯寵c a t鍙拰c o n c a t e n a t e鍖歸厤錛屽垯闇€瑕佸湪鏍煎紡涓ょ鍔犱笂絀烘牸錛?br />/ cat / {print}
鍐嶄緥濡傦紝浣犲笇鏈涙棦鍜宑 a t鍙堝拰C AT鍖歸厤錛屽垯鍙互浣跨敤鎴?|)錛?br />/ cat | CAT / {print}
鍦╣ a w k涓紝鏈夊嚑涓瓧絎︽湁鐗規畩鎰忎箟銆備笅闈㈠垪鍑哄彲浠ョ敤鍦╣ a w k鏍煎紡涓殑榪欎簺瀛楃錛?br />鈥?^ 琛ㄧず瀛楁鐨勫紑濮嬨€?br />渚嬪錛?3 ~ /^b/
聽聽聽濡傛灉絎笁涓瓧孌典互瀛楃b寮€濮嬶紝鍒欏尮閰嶃€?br />鈥?$ 琛ㄧず瀛楁鐨勭粨鏉熴€?br />渚嬪錛?3 ~ /b$/
濡傛灉絎笁涓瓧孌典互瀛楃b緇撴潫錛屽垯鍖歸厤銆?br />鈥?. 琛ㄧず鍜屼換浣曞崟瀛楃m鍖歸厤銆?br />渚嬪錛?3 ~ /i.m/
濡傛灉絎笁涓瓧孌墊湁瀛楃i錛屽垯鍖歸厤銆?br />鈥?| 琛ㄧず鈥滄垨鈥濄€?br />渚嬪錛? c a t | C AT/
鍜宑at 鎴朇 AT瀛楃鍖歸厤銆?br />鈥?* 琛ㄧず瀛楃鐨勯浂鍒板嬈¢噸澶嶃€?br />渚嬪錛?UNI*X/
鍜孶 N X銆乁 N I X銆乁 N I I X銆乁 N I I I X絳夊尮閰嶃€?br />鈥?+ 琛ㄧず瀛楃鐨勪竴嬈″埌澶氭閲嶅銆?br />渚嬪錛?br />/UNI+X/
鍜孶 N I X銆乁 N I I X絳夊尮閰嶃€?br />鈥?\{a錛宐\} 琛ㄧず瀛楃a嬈″埌b嬈′箣闂寸殑閲嶅銆?br />渚嬪錛?br />/ U N I \ { 1錛? \ } X
鍜孶 N I X銆乁 N I I X鍜孶 N I I I X鍖歸厤銆?br />鈥?? 琛ㄧず瀛楃闆舵鍜屼竴嬈$殑閲嶅銆?br />渚嬪錛?br />/UNI?X/
鍜孶NX 鍜孶 N I X鍖歸厤銆?br />鈥?[] 琛ㄧず瀛楃鐨勮寖鍥淬€?br />渚嬪錛?br />/I[BDG]M/
鍜孖 B M銆両 D M鍜孖 G M鍖歸厤
鈥?[^] 琛ㄧず涓嶅湪[ ]涓殑瀛楃銆?br />渚嬪錛?br />/I[^DE]M/
鍜屾墍鏈夌殑浠寮€濮嬨€丮緇撴潫鐨勫寘鎷笁涓瓧絎︾殑瀛楃涓插尮閰嶏紝闄や簡I D M鍜孖 E M涔嬪銆?br />
6.11 璋冪敤gawk紼嬪簭

褰撻渶瑕佸緢澶氬妯″紡鍜屽姩浣滄椂錛屼綘鍙互緙栧啓涓€涓猤 a w k紼嬪簭錛堜篃鍙仛g a w k鑴氭湰錛夈€傚湪g a w k紼嬪簭涓紝浣犲彲浠ョ渷鐣ユā寮忓拰鍔ㄤ綔涓よ竟鐨勫紩鍙鳳紝鍥犱負鍦╣ a w k紼嬪簭涓紝妯″紡鍜屽姩浣滀粠鍝紑濮嬪拰浠庡摢緇撴潫鏃舵槸寰堟樉鐒剁殑銆備綘鍙互浣跨敤濡備笅鍛戒護璋冪敤g a w k紼嬪簭錛?br />gawk -f script filename
姝ゅ懡浠や嬌g a w k瀵規枃浠秄 i l e n a m e鎵ц鍚嶄負s c r i p t鐨刧 a w k紼嬪簭銆?br />濡傛灉浣犱笉甯屾湜浣跨敤緙虹渷鐨勫瓧孌靛垎闅旂錛屼綘鍙互鍦╢閫夐」鍚庨潰璺熺潃F閫夐」鎸囧畾鏂扮殑瀛楁鍒嗛殧絎︼紙褰撶劧浣犱篃鍙互鍦╣ a w k紼嬪簭涓寚瀹氾級錛屼緥濡傦紝浣跨敤鍒嗗彿浣滀負瀛楁鍒嗛殧絎︼細
gawk -f script -F";" filename
濡傛灉甯屾湜gawk 紼嬪簭澶勭悊澶氫釜鏂囦歡錛屽垯鎶婂悇涓枃浠跺悕緗楀垪鍏跺悗錛?br />gawk -f script filename1 filename2 filename3 ...
緙虹渷鎯呭喌涓嬶紝 g a w k鐨勮緭鍑哄皢閫佸線灞忓箷銆備絾浣犲彲浠ヤ嬌鐢↙ i n u x鐨勯噸瀹氬悜鍛戒護浣縢 a w k鐨勮緭鍑洪€佸線涓€涓枃浠訛細
gawk -f script filename > save_file

6.12 BEGIN鍜孍ND

聽聽聽鏈変袱涓壒孌婄殑妯″紡鍦╣ a w k涓潪甯告湁鐢ㄣ€侭 E G I N妯″紡鐢ㄦ潵鎸囨槑g a w k寮€濮嬪鐞嗕竴涓枃浠朵箣鍓嶆墽琛屼竴浜涘姩浣溿€侭 E G I N緇忓父鐢ㄦ潵鍒濆鍖栨暟鍊鹼紝璁劇疆鍙傛暟絳夈€侲 N D妯″紡鐢ㄦ潵鍦ㄦ枃浠跺鐞嗗畬鎴愬悗鎵ц涓€浜涙寚浠わ紝涓€鑸敤浣滄€葷粨鎴栨敞閲娿€?br />BEGIN 鍜孍 N D涓墍鏈夎鎵ц鐨勬寚浠ら兘搴旇鐢ㄨ姳鎷彿鎷搗鏉ャ€侭EGIN 鍜孍 N D蹇呴』浣跨敤澶у啓銆?br />璇風湅涓嬮潰鐨勪緥瀛愶細
BEGIN { print "Starting the process the file" }
$1 == "UNIX" {print}
$2 > 10 {printf "This line has a value of %d"錛? 2 }
END { print "Finished processing the file. Bye!"}
姝ょ▼搴忎腑錛屽厛鏄劇ず涓€鏉′俊鎭細 Starting the process the file錛岀劧鍚庡皢鎵€鏈夌涓€涓瓧孌電瓑浜嶶 N I X鐨勬暣鏉¤褰曟樉紺哄嚭鏉ワ紝鐒跺悗鍐嶆樉紺虹浜屼釜瀛楁澶т簬10 鐨勮褰曪紝鏈€鍚庢樉紺轟俊鎭細 F i n i s h e dprocessing the file. Bye!銆?br />
6.13 鍙橀噺

鍦╣ a w k涓紝鍙互鐢ㄧ瓑鍙? = )緇欎竴涓彉閲忚祴鍊鹼細
var1 = 10
鍦╣ a w k涓紝浣犱笉蹇呬簨鍏堝0鏄庡彉閲忕被鍨嬨€?br />璇風湅涓嬮潰鐨勪緥瀛愶細
$1 == "Plastic" { count = count + 1 }
濡傛灉絎竴涓瓧孌墊槸P l a s t i c錛屽垯c o u n t鐨勫€煎姞1銆傚湪姝や箣鍓嶏紝鎴戜滑搴斿綋緇檆 o u n t璧嬩簣榪囧垵鍊鹼紝涓€鑸槸鍦˙ E G I N閮ㄥ垎銆?br />涓嬮潰鏄瘮杈冨畬鏁寸殑渚嬪瓙錛?br />BEGIN { count = 0 }
$5 == "UNIX" { count = count + 1 }
END { printf "%d occurrences of UNIX were found"錛宑ount }
鍙橀噺鍙互鍜屽瓧孌靛拰鏁板€間竴璧蜂嬌鐢紝鎵€浠ワ紝涓嬮潰鐨勮〃杈懼紡鍧囦負鍚堟硶錛?br />count = count + $6
count = $5 - 8
count = $5 + var1
鍙橀噺涔熷彲浠ユ槸鏍煎紡鐨勪竴閮ㄥ垎錛屼緥濡傦細
$2 > max_value {print "Max value exceeded by "錛?2 -max_value}
$4 - var1 < min_value {print "Illegal value of "錛? 4 }

6.14 鍐呯疆鍙橀噺

g a w k璇█涓湁鍑犱釜鍗佸垎鏈夌敤鐨勫唴緗彉閲忥紝鐜板湪鍒椾簬涓嬮潰錛?br />
NR 宸茬粡璇誨彇榪囩殑璁板綍鏁般€?br />FNR 浠庡綋鍓嶆枃浠朵腑璇誨嚭鐨勮褰曟暟銆?br />F I L E N A M E 杈撳叆鏂囦歡鐨勫悕瀛椼€?br />FS 瀛楁鍒嗛殧絎︼紙緙虹渷涓虹┖鏍鹼級銆?br />RS 璁板綍鍒嗛殧絎︼紙緙虹渷涓烘崲琛岋級銆?br />OFMT 鏁板瓧鐨勮緭鍑烘牸寮忥紙緙虹渷涓? g錛夈€?br />OFS 杈撳嚭瀛楁鍒嗛殧絎︺€?br />ORS 杈撳嚭璁板綍鍒嗛殧絎︺€?br />NF 褰撳墠璁板綍涓殑瀛楁鏁般€?br />
濡傛灉浣犲彧澶勭悊涓€涓枃浠訛紝鍒橬R 鍜孎NR 鐨勫€兼槸涓€鏍風殑銆備絾濡傛灉鏄涓枃浠訛紝 N R鏄鎵€鏈夌殑鏂囦歡鏉ヨ鐨勶紝鑰孎NR 鍒欏彧鏄拡瀵瑰綋鍓嶆枃浠惰€岃█銆備緥濡傦細
NR <= 5 {print "Not enough fields in the record"}
媯€鏌ヨ褰曟暟鏄惁灝忎簬5錛屽鏋滃皬浜?錛屽垯鏄劇ず鍑洪敊淇℃伅銆?br />F S鍗佸垎鏈夌敤錛屽洜涓篎 S鎺у埗杈撳叆鏂囦歡鐨勫瓧孌靛垎闅旂銆備緥濡傦紝鍦˙ E G I N鏍煎紡涓紝浣跨敤濡備笅鐨?br />鍛戒護錛?br />F S = " : "

6.15 鎺у埗緇撴瀯

6.15.1 if 琛ㄨ揪寮?br />
if 琛ㄨ揪寮忕殑璇硶濡備笅錛?br />if (expression){
c o m m a n d s
}
e l s e {
c o m m a n d s
}
渚嬪錛?br /># a simple if loop
(if ($1 == 0){
print "This cell has a value of zero"
}
else {
printf "The value is %d\n"錛? 1
} )
鍐嶇湅涓嬩竴涓緥瀛愶細
# a nicely formatted if loop
(if ($1 > $2){
print "The first column is larger"
} else {
print "The second column is larger"
} )

6.15.2 while 寰幆
while 寰幆鐨勮娉曞涓嬶細
while (expression){
c o m m a n d s
}
渚嬪錛?br /># interest calculation computes compound interest
# inputs from a file are the amount錛宨nterest_rateand years
{var = 1
while (var <= $3) {
p r i n t f ( " % f \ n "錛? 1 * ( 1 + $ 2 ) ^ v a r )
v a r + +}
}

6.15.3 for 寰幆

for 寰幆鐨勮娉曞涓嬶細
for (initialization; expression; increment) {
c o m m a n d
}
渚嬪錛?br /># interest calculation computes compound interest
# inputs from a file are the amount錛宨nterest_rateand years
{for (var=1; var <= $3; var++) {
p r i n t f ( " % f \ n "錛? 1 * ( 1 + $ 2 ) ^ v a r )
}
}
6.15.4 next 鍜宔xit

next 鎸囦護鐢ㄦ潵鍛婅瘔gawk 澶勭悊鏂囦歡涓殑涓嬩竴涓褰曪紝 鑰屼笉綆$幇鍦ㄦ鍦ㄥ仛浠€涔堛€傝娉曞涓嬶細
{ command1
c o m m a n d 2
c o m m a n d 3
n e x t
c o m m a n d 4
}
聽聽聽紼嬪簭鍙鎵ц鍒皀 e x t鎸囦護錛屽氨璺沖埌涓嬩竴涓褰曚粠澶存墽琛屽懡浠ゃ€傚洜姝わ紝鏈緥涓紝 c o m m a n d 4鎸囦護姘歌繙涓嶄細琚墽琛屻€?br />聽聽聽紼嬪簭閬囧埌e x i t鎸囦護鍚庯紝灝辮漿鍒扮▼搴忕殑鏈熬鍘繪墽琛孍 N D錛屽鏋滄湁E N D鐨勮瘽銆?br />
6.16 鏁扮粍

g a w k璇█鏀寔鏁扮粍緇撴瀯銆傛暟緇勪笉蹇呬簨鍏堝垵濮嬪寲銆傚0鏄庝竴涓暟緇勭殑鏂規硶濡備笅錛?br />a r r a y n a m e [ n u m ] = v a l u e
璇風湅涓嬮潰鐨勪緥瀛愶細
# reverse lines in a file
{line[NR] = $0 } # remember each line
END {var=NR # output lines in reverse order
while (var > 0){
print line[var]
v a r - -
}
}
姝ゆ紼嬪簭璇誨彇涓€涓枃浠剁殑姣忎竴琛岋紝騫剁敤鐩稿弽鐨勯『搴忔樉紺哄嚭鏉ャ€傛垜浠嬌鐢∟ R浣滀負鏁扮粍鐨勪笅鏍囨潵瀛樺偍鏂囦歡鐨勬瘡涓€鏉¤褰曪紝鐒跺悗鍦ㄤ粠鏈€鍚庝竴鏉¤褰曞紑濮嬶紝灝嗘枃浠墮€愭潯鍦版樉紺哄嚭鏉ャ€?br />
6.17 鐢ㄦ埛鑷畾涔夊嚱鏁?br />
澶嶆潅鐨刧awk 紼嬪簭甯稿父鍙互浣跨敤鑷繁瀹氫箟鐨勫嚱鏁版潵綆€鍖栥€傝皟鐢ㄧ敤鎴瘋嚜瀹氫箟鍑芥暟涓庤皟鐢ㄥ唴閮ㄥ嚱鏁扮殑鏂規硶涓€鏍楓€傚嚱鏁扮殑瀹氫箟鍙互鏀懼湪gawk 紼嬪簭鐨勪換浣曞湴鏂廣€?br />鐢ㄦ埛鑷畾涔夊嚱鏁扮殑鏍煎紡濡備笅錛?br />function name (parameter-list) {
b o d y - o f - f u n c t i o n
}
name 鏄墍瀹氫箟鐨勫嚱鏁扮殑鍚嶇О銆備竴涓紜殑鍑芥暟鍚嶇О鍙寘鎷竴搴忓垪鐨勫瓧姣嶃€佹暟瀛椼€佷笅鏍囩嚎( u n d e r s c o r e s )錛屼絾鏄笉鍙敤鏁板瓧鍋氬紑澶淬€俻 a r a m e t e r-list 鏄嚱鏁扮殑鍏ㄩ儴鍙傛暟鐨勫垪琛紝鍚勪釜鍙傛暟涔嬮棿浠ラ€楃偣闅斿紑銆俠ody-of-function 鍖呭惈gawk 鐨勮〃杈懼紡錛屽畠鏄嚱鏁板畾涔夐噷鏈€閲嶈鐨勯儴鍒嗭紝瀹冨喅瀹氬嚱鏁板疄闄呰鍋氱殑浜嬫儏銆?br />涓嬮潰榪欎釜渚嬪瓙錛屼細灝嗘瘡涓褰曠殑絎竴涓瓧孌電殑鍊肩殑騫蟲柟涓庣浜屼釜瀛楁鐨勫€肩殑騫蟲柟鍔犺搗鏉ャ€?br />{print "sum ="錛孲 q u a r e S u m ( $ 1錛? 2 ) }
function SquareSum(x錛寉) {
s u m = x * x + y * y
return sum
}
聽聽聽鍒版錛屾垜浠凡緇忕煡閬撲簡g a w k鐨勫熀鏈敤娉曘€俫 a w k璇█鍗佸垎鏄撳濂界敤錛屼緥濡傦紝浣犲彲浠ョ敤g a w k緙栧啓涓€孌靛皬紼嬪簭鏉ヨ綆椾竴涓洰褰曚腑鎵€鏈夋枃浠剁殑涓暟鍜屽閲忋€傚鏋滅敤鍏朵粬鐨勮璦€錛屽C璇█錛屽垯浼氬崄鍒嗙殑楹葷儲錛岀浉鍙嶏紝g a w k鍙渶瑕佸嚑琛屽氨鍙互瀹屾垚姝ゅ伐浣溿€?br />
6.18 鍑犱釜瀹炰緥

鏈€鍚庯紝鍐嶄婦鍑犱釜g a w k鐨勪緥瀛愶細
gawk '{if (NF > max) max = NF}
END {print max}'
姝ょ▼搴忎細鏄劇ず鎵€鏈夎緭鍏ヨ涔嬩腑瀛楁鐨勬渶澶т釜鏁般€?br />gawk 'length($0) > 80'
姝ょ▼搴忎細鏄劇ず鍑鴻秴榪?0 涓瓧絎︾殑姣忎竴琛屻€傛澶勫彧鏈夋ā寮忚鍒楀嚭錛屽姩浣滄槸閲囩敤緙虹渷鍊兼樉紺烘暣涓褰曘€?br />gawk 'NF > 0'
鏄劇ず鎷ユ湁鑷沖皯涓€涓瓧孌電殑鎵€鏈夎銆傝繖鏄竴涓畝鍗曠殑鏂規硶錛屽皢涓€涓枃浠墮噷鐨勬墍鏈夌┖鐧借鍒犻櫎銆?br />gawk 'BEGIN {for (i = 1; i <= 7; i++)
print int(101 * rand())}'
姝ょ▼搴忎細鏄劇ず鍑鴻寖鍥存槸0 鍒?00 涔嬮棿鐨? 涓殢鏈烘暟銆?br />ls -l files | gawk '{x += $4}; END {print "total bytes: " x}'
姝ょ▼搴忎細鏄劇ず鍑烘墍鏈夋寚瀹氱殑鏂囦歡鐨勬€誨瓧鑺傛暟銆?br />expand file | gawk '{if (x < length()) x = length()}
END {print "maximum line length is " x}'
姝ょ▼搴忎細灝嗘寚瀹氭枃浠墮噷鏈€闀夸竴琛岀殑闀垮害鏄劇ず鍑烘潵銆俥xpand 浼氬皢tab 鏀規垚s p a c e錛屾墍浠ユ槸鐢ㄥ疄闄呯殑鍙寵竟鐣屾潵鍋氶暱搴︾殑姣旇緝銆?br />gawk 'BEGIN {FS = ":"}
{print $1 | "sort"}' /etc/passwd
姝ょ▼搴忎細灝嗘墍鏈夌敤鎴風殑鐧誨綍鍚嶇О錛屼緷鐓у瓧姣嶇殑欏哄簭鏄劇ず鍑烘潵銆?br />gawk '{nlines++}
END {print nlines}'
姝ょ▼搴忎細灝嗕竴涓枃浠剁殑鎬昏鏁版樉紺哄嚭鏉ャ€?br />gawk 'END {print NR}'
姝ょ▼搴忎篃浼氬皢涓€涓枃浠剁殑鎬昏鏁版樉紺哄嚭鏉ワ紝浣嗘槸璁$畻琛屾暟鐨勫伐浣滅敱g a w k鏉ュ仛銆?br />gawk '{print NR錛? 0 } '
姝ょ▼搴忔樉紺哄嚭鏂囦歡鐨勫唴瀹規椂錛屼細鍦ㄦ瘡琛岀殑鏈€鍓嶉潰鏄劇ず鍑鴻鍙鳳紝瀹冪殑鍑芥暟涓庘€?cat -n鈥欑被浼箋€?



bluestone 2006-06-01 14:11 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 杨浦区| 新沂市| 隆安县| 焉耆| 中西区| 鲁甸县| 江安县| 临潭县| 博乐市| 西藏| 游戏| 吕梁市| 塘沽区| 吴桥县| 乌苏市| 固原市| 稻城县| 新干县| 江山市| 湟源县| 溆浦县| 潍坊市| 房山区| 富顺县| 闸北区| 花莲县| 渝北区| 历史| 郯城县| 永仁县| 高安市| 昭平县| 柏乡县| 松江区| 滨州市| 秭归县| 织金县| 贞丰县| 衡山县| 合川市| 湖北省|