<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>阿债的山寨实验室 &#187; awk</title>
	<atom:link href="http://blog.declab.com/tag/awk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.declab.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 May 2010 03:45:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>替换SQL文件中的表结构</title>
		<link>http://blog.declab.com/web/2008/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/</link>
		<comments>http://blog.declab.com/web/2008/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 18:54:11 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/</guid>
		<description><![CDATA[#!/bin/gawk -f # 替换SQL文件中的表结构 # RUN: # gawk -f sql.awk some_database.sql BEGIN{ RS = "--" FS = "\n" outf = "some_database.add.sql" print("\n") > outf } length($0)>0 &#124;&#124; match($0, "foo") &#124;&#124; match($0, "CREATE TABLE"){ print( rep_str($0) "\n") >> outf } function rep_str(row) { gsub("fooes", "bars", row); gsub("Fooes", "Bars", row); gsub("foo", "bar", row); gsub("Foo", "Bar", row); gsub("FOO", [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<pre lang="bash" line="1">#!/bin/gawk -f
# 替换SQL文件中的表结构
# RUN:
# gawk -f sql.awk some_database.sql

BEGIN{
  RS = "--"
  FS = "\n"
  outf = "some_database.add.sql"
  print("\n") > outf
}
length($0)>0 || match($0, "foo") || match($0, "CREATE TABLE"){
    print( rep_str($0) "\n") >> outf
}

function rep_str(row) {
  gsub("fooes", "bars", row);
  gsub("Fooes", "Bars", row);
  gsub("foo", "bar", row);
  gsub("Foo", "Bar", row);
  gsub("FOO", "BAR", row);
  return row
}</pre>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/%e6%9b%bf%e6%8d%a2sql%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e8%a1%a8%e7%bb%93%e6%9e%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awk(gawk)的参考手册</title>
		<link>http://blog.declab.com/server/2008/awkgawk%e7%9a%84%e5%8f%82%e8%80%83%e6%89%8b%e5%86%8c/</link>
		<comments>http://blog.declab.com/server/2008/awkgawk%e7%9a%84%e5%8f%82%e8%80%83%e6%89%8b%e5%86%8c/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 12:18:41 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[服务器管理]]></category>
		<category><![CDATA[awk]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/awkgawk%e7%9a%84%e5%8f%82%e8%80%83%e6%89%8b%e5%86%8c/</guid>
		<description><![CDATA[一个常用的awk类似这样 命令行执行 gawk -f script.awk in_file awk不改变输入文件，可以加-F参数设置列分隔符 这个是最好最详细的中文教程 [url=http://lvdbing.xinwen520.net/study/The%20AWK%20Programming%20Language.htm]Awk中文学习手册[/url] 典型代码 #!/bin/gawk -f # 将源文件超过81字符的行换行，并加上行号 # utf-8的中文占三个字符，如果把一个中文从中间截开，这个字就会弄丢 # 对中英文混合还没有找到好方法 BEGIN{ outf = "out_file.txt" print("#-*- coding:utf-8 -*-") > outf #清空文件 } NR==1{ print("1 "$0) >> outf } NR>1{ if(length($0)> outf } else { #从第二行开始，每行长度大于80字符的才处理 switchline(NR, $0) #awk的函数参数是传值 } } END{ close(FILENAME); } function switchline(no, row) { #换行函数 [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>一个常用的awk类似这样<br />
命令行执行 gawk  -f script.awk  in_file<br />
awk不改变输入文件，可以加-F参数设置列分隔符<br />
这个是最好最详细的中文教程 [url=http://lvdbing.xinwen520.net/study/The%20AWK%20Programming%20Language.htm]Awk中文学习手册[/url]<br />
<span id="more-38"></span><br />
典型代码</p>
<pre lang="bash" line="1">#!/bin/gawk -f
# 将源文件超过81字符的行换行，并加上行号
# utf-8的中文占三个字符，如果把一个中文从中间截开，这个字就会弄丢
# 对中英文混合还没有找到好方法

BEGIN{
  outf = "out_file.txt"
  print("#-*- coding:utf-8 -*-") > outf  #清空文件
}
NR==1{
   print("1 "$0) >> outf
}
NR>1{
  if(length($0)<=81) {
    printf("%d %s\n", NR, $0) >> outf
  } else { #从第二行开始，每行长度大于80字符的才处理
    switchline(NR, $0)  #awk的函数参数是传值
  }
}
END{
  close(FILENAME);
}

function switchline(no, row) { #换行函数
  print(no " " substr(row, 0, 81)) >> outf
  print("   " substr(row, 81)) >> outf
}</pre>
<p>这段附录摘自  [url=http://www.itisedu.com/phrase/200603021801255.html]中程在线AWK教程[/url]<br />
[quote]<br />
1.awk的常规表达式元字符</p>
<p>换码序列<br />
^ 在字符串的开头开始匹配<br />
$ 在字符串的结尾开始匹配<br />
. 与任何单个字符串匹配<br />
[ABC] 与[]内的任一字符匹配<br />
[A-Ca-c] 与A-C及a-c范围内的字符匹配（按字母表顺序）<br />
[^ABC] 与除[]内的所有字符以外的任一字符匹配<br />
Desk|Chair 与Desk和Chair中的任一个匹配<br />
[ABC][DEF] 关联。与A、B、C中的任一字符匹配，且其后要跟D、E、F中的任一个字符。<br />
* 与A、B或C中任一个出现0次或多次的字符相匹配<br />
+ 与A、B或C中任何一个出现1次或多次的字符相匹配<br />
？ 与一个空串或A、B或C在任何一个字符相匹配<br />
（Blue|Black）berry 合并常规表达式，与Blueberry或Blackberry相匹配</p>
<p>2.awk算术运算符</p>
<p>运算符 用途<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
x^y x的y次幂<br />
x**y 同上<br />
x%y 计算x/y的余数（求模）<br />
x+y x加y<br />
x-y x减y<br />
x*y x乘y<br />
x/y x除y<br />
-y 负y(y的开关符号);也称一目减<br />
++y y加1后使用y(前置加）<br />
y++ 使用y值后加1（后缀加）<br />
&#8211;y y减1后使用y(前置减）<br />
y&#8211; 使用后y减1(后缀减）<br />
x=y 将y的值赋给x<br />
x+=y 将x+y的值赋给x<br />
x-=y 将x-y的值赋给x<br />
x*=y 将x*y的值赋给x<br />
x/=y 将x/y的值赋给x x%=y 将x%y的值赋给x<br />
x^=y 将x^y的值赋给x<br />
x**=y 将x**y的值赋给x</p>
<p>3.awk允许的测试：</p>
<p>操作符 含义</p>
<p>x==y x等于y<br />
x!=y x不等于y<br />
x>y x大于y<br />
x>=y x大于或等于y<br />
xx<=y x小于或等于y?<br />
x~re x匹配正则表达式re?<br />
x!~re x不匹配正则表达式re?</p>
<p>4.awk的操作符(按优先级升序排列)</p>
<p>= 、+=、 -=、 *= 、/= 、 %=<br />
||<br />
&#038;&#038;<br />
> >= < <= == != ~ !~<br />
xy (字符串连结，&#8217;x&#8221;y&#8217;变成&#8221;xy&#8221;）<br />
+ -<br />
* / %<br />
++ &#8211;</p>
<p>5.awk内置变量（预定义变量）</p>
<p>说明：表中v项表示第一个支持变量的工具（下同）：A=awk，N=nawk,P=POSIX awk,G=gawk</p>
<p>V 变量 含义 缺省值<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
N ARGC 命令行参数个数<br />
G ARGIND 当前被处理文件的ARGV标志符<br />
N ARGV 命令行参数数组<br />
G CONVFMT 数字转换格式 %.6g<br />
P ENVIRON UNIX环境变量<br />
N ERRNO UNIX系统错误消息<br />
G FIELDWIDTHS 输入字段宽度的空白分隔字符串<br />
A FILENAME 当前输入文件的名字<br />
P FNR 当前记录数<br />
A FS 输入字段分隔符 空格<br />
G IGNORECASE 控制大小写敏感0（大小写敏感）<br />
A NF 当前记录中的字段个数<br />
A NR 已经读出的记录数<br />
A OFMT 数字的输出格式 %.6g<br />
A OFS 输出字段分隔符 空格<br />
A ORS 输出的记录分隔符 新行<br />
A RS 输入的记录他隔符 新行<br />
N RSTART 被匹配函数匹配的字符串首<br />
N RLENGTH 被匹配函数匹配的字符串长度<br />
N SUBSEP 下标分隔符 &#8220;34&#8243;</p>
<p>6.awk的内置函数</p>
<p>V 函数 用途或返回值<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
N gsub(reg,string,target) 每次常规表达式reg匹配时替换target中的string<br />
N index(search,string) 返回string中search串的位置<br />
A length(string) 求串string中的字符个数<br />
N match(string,reg) 返回常规表达式reg匹配的string中的位置<br />
N printf(format,variable) 格式化输出，按format提供的格式输出变量variable。<br />
N split(string,store,delim) 根据分界符delim,分解string为store的数组元素<br />
N sprintf(format,variable) 返回一个包含基于format的格式化数据，variables是要放到串中的数据<br />
G strftime(format,timestamp) 返回一个基于format的日期或者时间串，timestmp是systime()函数返回的时间<br />
N sub(reg,string,target) 第一次当常规表达式reg匹配，替换target串中的字符串<br />
A substr(string,position,len) 返回一个以position开始len个字符的子串<br />
P tolower(string) 返回string中对应的小写字符<br />
P toupper(string) 返回string中对应的大写字符<br />
A atan(x,y) x的余切(弧度)<br />
N cos(x) x的余弦(弧度)<br />
A exp(x) e的x幂<br />
A int(x) x的整数部分<br />
A log(x) x的自然对数值<br />
N rand() 0-1之间的随机数<br />
N sin(x) x的正弦(弧度)<br />
A sqrt(x) x的平方根<br />
A srand(x) 初始化随机数发生器。如果忽略x，则使用system()<br />
G system() 返回自1970年1月1日以来经过的时间（按秒计算）<br />
[/quote]</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/server/2008/awkgawk%e7%9a%84%e5%8f%82%e8%80%83%e6%89%8b%e5%86%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Awk的用法</title>
		<link>http://blog.declab.com/server/2008/awk%e7%9a%84%e7%94%a8%e6%b3%95/</link>
		<comments>http://blog.declab.com/server/2008/awk%e7%9a%84%e7%94%a8%e6%b3%95/#comments</comments>
		<pubDate>Wed, 28 May 2008 14:45:46 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[服务器管理]]></category>
		<category><![CDATA[awk]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/awk%e7%9a%84%e7%94%a8%e6%b3%95/</guid>
		<description><![CDATA[没有去系统的看Awk的文档，到要用的时候才知道那一点皮毛远远不够，赶紧恶补。 [quote]变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输入域分隔符，默认为一个空格 RS 输入记录分隔符 NF 当前记录里域个数 NR 到目前为止记录数 OFS 输出域分隔符 ORS 输出记录分隔符[/quote] 大家到这里看完整的吧 [url=http://www.xiaojb.com/archives/it/awk.shtml]awk用法小结[/url] 更详细的教程 [url=http://unix-cd.com/unixcd12/article_5817.html] Awk 实例（一）[/url] 以后我再贴个自己的例子上来。 No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>没有去系统的看Awk的文档，到要用的时候才知道那一点皮毛远远不够，赶紧恶补。<br />
<span id="more-35"></span><br />
[quote]变量名 含义<br />
ARGC 命令行变元个数<br />
ARGV 命令行变元数组<br />
FILENAME 当前输入文件名<br />
FNR 当前文件中的记录号<br />
FS 输入域分隔符，默认为一个空格<br />
RS 输入记录分隔符<br />
NF 当前记录里域个数<br />
NR 到目前为止记录数<br />
OFS 输出域分隔符<br />
ORS 输出记录分隔符[/quote]</p>
<p>大家到这里看完整的吧 [url=http://www.xiaojb.com/archives/it/awk.shtml]awk用法小结[/url]<br />
更详细的教程 [url=http://unix-cd.com/unixcd12/article_5817.html] Awk 实例（一）[/url]<br />
以后我再贴个自己的例子上来。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/server/2008/awk%e7%9a%84%e7%94%a8%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
