当前位置: 首页 > news >正文

简单的房源展示网站开发网站建设工资多少

简单的房源展示网站开发,网站建设工资多少,wordpress中文视频插件,西安网站托管哪家好在第二篇 sed 文章中#xff0c;我提供了一些示例来演示 sed 的工作原理#xff0c;但是它们当中很少有示例能实际做特别有用的事。在这篇 sed 系列的最后文章中#xff0c;我要改变那种方式#xff0c;并使用 sed 来做实际的事。我将为您显示几个示例#xff0c;它们不仅…在第二篇 sed 文章中我提供了一些示例来演示 sed 的工作原理但是它们当中很少有示例能实际做特别有用的事。在这篇 sed 系列的最后文章中我要改变那种方式并使用 sed 来做实际的事。我将为您显示几个示例它们不仅演示 sed 的能力而且还做一些真正巧妙和方便的事。例如在本文的后半部将为您演示如何设计一个 sed 脚本来将 .QIF 文件从 Intuit 的 Quicken 金融程序转换成具有良好格式的文本文件。在那样做之前我们将看一下不怎么复杂但却很有用的 sed 脚本。 文本转换第一个实际脚本将 UNIX 风格的文本转换成 DOS/Windows 格式。您可能知道基于 DOS/Windows 的文本文件在每一行末尾有一个 CR回车和 LF换行而 UNIX 文本只有一个换行。有时可能需要将某些 UNIX 文本移至 Windows 系统该脚本将为您执行必需的格式转换。 $ sed -e ’s/$//r/’ myunix.txt mydos.txt 在该脚本中’$’ 规则表达式将与行的末尾匹配而 ‘/r’ 告诉 sed 在其之前插入一个回车。在换行之前插入回车立即每一行就以 CR/LF 结束。请注意仅当使用 GNU sed 3.02.80 或以后的版本时才会用 CR 替换 ‘/r’。如果还没有安装 GNU sed 3.02.80请在我的第一篇 sed 文章中查看如何这样做的说明。 我已记不清有多少次在下载一些示例脚本或 C 代码之后却发现它是 DOS/Windows 格式。虽然很多程序不在乎 DOS/Windows 格式的 CR/LF 文本文件但是有几个程序却在乎 — 最著名的是 bash只要一遇到回车它就会出问题。以下 sed 调用将把 DOS/Windows 格式的文本转换成可信赖的 UNIX 格式 $ sed -e ’s/.$//’ mydos.txt myunix.txt 该脚本的工作原理很简单替代规则表达式与一行的最末字符匹配而该字符恰好就是回车。我们用空字符替换它从而将其从输出中彻底删除。如果使用该脚本并注意到已经删除了输出中每行的最末字符那么您就指定了已经是 UNIX 格式的文本文件。也就没必要那样做了 反转行下面是另一个方便的小脚本。与大多数 Linux 发行版中包括的 “tac” 命令一样该脚本将反转文件中行的次序。”tac” 这个名称可能会给人以误导因为 “tac” 不反转行中字符的位置左和右而是反转文件中行的位置上和下。用 “tac” 处理以下文件 foo bar oni ….将产生以下输出 oni bar foo 可以用以下 sed 脚本达到相同目的 $ sed -e ‘1!G;h;$!d’ forward.txt backward.txt 如果登录到恰巧没有 “tac” 命令的 FreeBSD 系统将发现该 sed 脚本很有用。虽然方便但最好还是知道该脚本为什么那样做。让我们对它进行讨论。 反转解释首先该脚本包含三个由分号隔开的单独 sed 命令’1!G’、’h’ 和 ‘$!d’。现在需要好好理解用于第一个和第三个命令的地址。如果第一个命令是 ‘1G’则 ‘G’ 命令将只应用第一行。然而还有一个 ‘!’ 字符 — 该 ‘!’ 字符忽略该地址即’G’ 命令将应用到除第一行之外的所有行。’$!d’ 命令与之类似。如果命令是 ‘$d’则将只把 ‘d’ 命令应用到文件中的最后一行’$’ 地址是指定最后一行的简单方式。然而有了 ‘!’ 之后’$!d’ 将把 ‘d’ 命令应用到除最后一行之外的所有行。现在我们所要理解的是这些命令本身做什么。 当对上面的文本文件执行反转脚本时首先执行的命令是 ‘h’。该命令告诉 sed 将模式空间保存正在处理的当前行的缓冲区的内容复制到保留空间临时缓冲区。然后执行 ‘d’ 命令该命令从模式空间中删除 “foo”以便在对这一行执行完所有命令之后不打印它。 现在第二行。在将 “bar” 读入模式空间之后执行 ‘G’ 命令该命令将保留空间的内容 (”foo/n”) 附加到模式空间 (”bar/n”)使模式空间的内容为 “bar/n/foo/n”。’h’ 命令将该内容放回保留空间保护起来然后’d’ 从模式空间删除该行以便不打印它。 对于最后的 “oni” 行除了不删除模式空间的内容由于 ‘d’ 之前的 ‘$!’以及将模式空间的内容三行打印到标准输出之外重复同样的步骤。 现在要用 sed 执行一些强大的数据转换。 sed QIF 魔法过去几个星期我一直想买一份 Quicken 来结算我的银行帐户。Quicken 是一个非常好的金融程序当然会成功地完成这项工作。但是经过考虑之后我觉得自己可以轻易编写某个软件来结算我的支票簿。我想毕竟我是个软件开发人员 我开发了一个很好的小型支票簿结算程序使用 awk它通过分析包含我的所有交易的文本文件的语法来计算余额。略微调整之后我将其改进以便可以象 Quicken 那样跟踪不同的贷款和借款类别。但是我还要添加一个特性。最近我将帐户转移到一家有联机 Web 帐户界面的银行。有一天我注意到这家银行的 Web 站点允许以 Quicken 的 .QIF 格式下载我的帐户信息。我马上觉得如果可以将该信息转换成文本格式那就太棒了。 两种格式的故事在查看 QIF 格式之前先看一下我的 checkbook.txt 格式 28 Aug 2000 food - - Y Supermarket 30.94 25 Aug 2000 watr - 103 Y Check 103 52.86 在我的文件中所有字段都由一个或多个制表符分开每个交易占据一行。日期之后的下一个字段列出支出类型如果是收入项则为 “-”。第三个字段列出收入类型如果是支出项则为 “-”。然后是一个支票号字段如果为空则还是 “-”一个交易完成字段”Y” 或 “N”一个注释和一个美元金额字段。现在让我们看一下 QIF 格式。当用文本查看器查看下载的 QIF 文件时它看起来如下 !Type:Bank D08/28/2000 T-8.15 N PCHECKCARD SUPERMARKET ^ D08/28/2000 T-8.25 N PCHECKCARD PUNJAB RESTAURANT ^ D08/28/2000 T-17.17 N PCHECKCARD SUPERMARKET 浏览过文件之后不难猜出其格式 — 忽略第一行其余的格式如下 D数据T交易量N支票号P描述^ 这是字段分隔符 开始处理在处理象这样重要的 sed 项目时不要气馁 — sed 允许您将数据逐渐修改成最终形式。在进行当中可以继续细化 sed 脚本直到输出与预期的完全一样为止。无需在试第一次时就保证其完全正确。 要开始首先创建一个名为 “qiftrans.sed” 的文件然后开始修改数据 1d /^^/d s/[[:cntrl:]]//g 第一个 ‘1d’ 命令删除第一行第二个命令从输出除去那些讨厌的 ‘^’ 字符。最后一行除去文件中可能存在的任何控制字符。既然在处理外来文件格式我想消除在中途遇到任何控制字符的风险。到目前为止一切顺利。现在要向该基本脚本中添加一些处理功能 1d /^^/d s/[[:cntrl:]]//g /^D/ {s/^D/(.*/)//1/tOUTY/tINNY/t/s/^01/Jan/ s/^02/Feb/s/^03/Mar/ s/^04/Apr/s/^05/May/ s/^06/Jun/s/^07/Jul/ s/^08/Aug/s/^09/Sep/ s/^10/Oct/s/^11/Nov/ s/^12/Dec/s:^/(.*/)//(.*/)//(.*/):/2 /1 /3: } 首先添加一个 ‘/^D/’ 地址以便 sed 只在遇到 QIF 数据字段的第一个字符 ‘D’ 时才开始处理。当 sed 将这样一行读入其模式空间时将按顺序执行花括号中的所有命令。 花括号中的第一个命令将把如下行 D08/28/2000 变换成 08/28/2000 OUTY INNY 当然现在的格式还不完美但没关系。我们将在进行过程中逐渐细化模式空间的内容。后面 12 行的最后效果是将数据变换成三个字母的格式最后一行从数据中除去三个斜杠。最后得到这一行 Aug 28 2000 OUTY INNY OUTY 和 INNY 字段是占位符以后将被替换。现在还不能确定它们因为如果美元金额为负将把 OUTY 和 INNY 设置成 “misc” 和 “-”但是如果美元金额为正将分别把它们更改成 “-” 和 “inco”。既然还没有读入美元金额所以需要暂时使用占位符。 细化现在进一步细化 1d /^^/d s/[[:cntrl:]]//g /^D/ {s/^D/(.*/)//1/tOUTY/tINNY/t/s/^01/Jan/ s/^02/Feb/s/^03/Mar/ s/^04/Apr/s/^05/May/ s/^06/Jun/s/^07/Jul/ s/^08/Aug/s/^09/Sep/ s/^10/Oct/s/^11/Nov/ s/^12/Dec/s:^/(.*/)//(.*/)//(.*/):/2 /1 /3:N N Ns//nT/(.*/)/nN/(.*/)/nP/(.*/)/NUM/2NUM/t/tY/t/t/3/tAMT/1AMT/s/NUMNUM/-/ s/NUM/([0-9]*/)NUM//1/s//([0-9]/),//1/ } 后七行有些复杂所以将详细讨论它们。首先连续使用三个 ‘N’ 命令。’N’ 命令告诉 sed 将下一行读入输入中然后将其附加到当前模式空间。这三个 ‘N’ 命令导致将下三行附加到当前模式空间缓冲区现在这一行看起来如下 28 Aug 2000 OUTY INNY /nT-8.15/nN/nPCHECKCARD SUPERMARKET sed 的模式空间变得很难看 — 需要除去额外的新行并执行某些附加的格式化。要这样做将使用替代命令。要匹配的模式为 ‘/nT.*/nN.*/nP.*’ 这将与后面依次跟有 ‘T’、零或多个字符、新行、’N、任何数量的字符、新行、’P、以及任何数量字符的新行匹配。呀这个规则表达式将与刚刚附加到模式空间的三行的全部内容匹配。但我们要重新格式化该区域而不是整个替换它。美元金额、支票号如果有的话和描述需要出现在替换字符串中。要这样做我们用带有反斜杠的圆括号括起那些“感兴趣部分”以便可以在替换字符串中引用它们使用 ‘/1′、’/2/ 和 ‘/3′ 来告诉 sed 将它们插入到何处。以下是最后的命令 s//nT/(.*/)/nN/(.*/)/nP/(.*/)/NUM/2NUM/t/tY/t/t/3/tAMT/1AMT/ 该命令将我们的行变换成 28 Aug 2000 OUTY INNY NUMNUM Y CHECKCARD SUPERMARKET AMT-8.15AMT 虽然该行正变得好一些但是有几件事一看就有点…啊…有趣。首先是那个愚蠢的 “NUMNUM” 字符串 — 其目的何在如果查看 sed 脚本的后两行就会发现其目的后两行将把 “NUMNUM” 替换成 “-”而把 “NUM”number”NUM” 替换成 number。如您所见用愚蠢的标记括起支票号允许我们在该字段为空时方便地插入一个 “-”。 结束尝试最后一行除去数字后的逗号。它把如 “3,231.00″ 这样的美元金额转换成我使用的格式 “3231.00″。现在让我们看一下最终脚本 最终的“QIF 到文本”脚本 1d /^^/d s/[[:cntrl:]]//g /^D/ { s/^D/(.*/)//1/tOUTY/tINNY/t/s/^01/Jan/ s/^02/Feb/ s/^03/Mar/ s/^04/Apr/ s/^05/May/s/^06/Jun/ s/^07/Jul/ s/^08/Aug/ s/^09/Sep/ s/^10/Oct/s/^11/Nov/ s/^12/Dec/ s:^/(.*/)//(.*/)//(.*/):/2 /1 /3:N N N s//nT/(.*/)/nN/(.*/)/nP/(.*/)/NUM/2NUM/t/tY/t/t/3/tAMT/1AMT/s/NUMNUM/-/ s/NUM/([0-9]*/)NUM//1/ s//([0-9]/),//1//AMT-[0-9]*.[0-9]*AMT/b fixnegss/AMT/(.*/)AMT//1/ s/OUTY/-/ s/INNY/inco/b done :fixnegs s/AMT-/(.*/)AMT//1/ s/OUTY/misc/s/INNY/-/ :done } 附加的十一行使用替代和一些分支功能来美化输出。首先看一下这行 /AMT-[0-9]*.[0-9]*AMT/b fixnegs 该行包含一个格式为 “/regexp/b label” 的分支命令。如果模式空间与规则表达式匹配sed 将分支到 fixnegs 标号。您应该可以轻易找到该标号它在代码中为 “:fixnegs”。如果规则表达式不匹配则以常规方式继续处理下一个命令。 既然您理解该命令本身的工作原理让我们看一下分支。如果看一下分支规则表达式将看到它与后面依次跟有 ‘-’、任意数量的数字、一个 ‘.’、任意数量的数字和 ‘AMT’ 的字符串 ‘AMT’ 匹配。就象我确信您已猜到一样该规则表达式专门处理负的美元金额。在这之前用 ‘ATM’ 括起美元金额以便以后可以轻易找到它。因为规则表达式只与以 ‘-’ 开始的美元金额匹配所以该分支只在恰巧处理借款时才发生。如果正处理贷款应该将 OUTY 设置成 ‘misc’将 INNY 设置成 ‘-’并且应该除去贷款数量前面的负号。如果跟踪代码的流程将看到实际情况正是这样。如果不执行分支则用 ‘-’ 替换 OUTY用 ‘inco’ 替换 INNY。完成了现在输出行是完美的 28 Aug 2000 misc - - Y CHECKCARD SUPERMARKET -8.15 别犯糊涂如您所见只要循序渐进地解决问题使用 sed 转换数据就没有那么难。不要试图使用一个 sed 命令或一下子解决所有问题。相反要朝着目标逐步进行并不断改进 sed 脚本直到其输出正如您希望那样为止。sed 有许多功能希望您已非常熟悉其内部工作原理并继续努力以进一步掌握它
http://wiki.neutronadmin.com/news/310635/

相关文章:

  • 自己制作网站的软件宝安建网站外包
  • 图书馆建设网站注意点腾讯的wordpress怎么样
  • 响应式网站设计与实现论文个人开店做外贸网站
  • 营销型网站的名词解释杭州网站设计推荐柚米
  • 有后台的网站谷歌应用商店app下载
  • 网站开发的条件洛阳网红打卡地
  • 外贸建站哪个好网上制作名片
  • 网站建设什么意思专业网站开发公司地址
  • 南宁世尊商贸网站建设drupal做虚拟发货网站
  • 网站精准ip接口怎么做深圳华强北电子城
  • 200元网站建设2万元建设网站贵吗
  • 图片背景在网站建设中WordPress禁用自适应
  • 山东天成水利建设 网站合购吧登录WordPress
  • 科凡建站响应式网站设计的要求
  • 中小学生做试卷的网站6如何做招聘网站效果评估
  • 湘潭做网站问下磐石网络建网站书籍
  • 在线捕鱼网站建设蓝色风格的网站
  • 广西南宁建设银行最新招聘网站太原零元网站建设
  • 中国建设监理协会网站会员专区网页设计与网站建设课程设计报告
  • 宁波网站建设平台分析展会布置
  • 上海高端网站制作公司如何做企业税收筹划
  • 建设php网站门户网站建设的平台搭建
  • 查询邮箱注册过的网站排名好的徐州网站开发
  • 网站如何推广行业免费高清图片素材网站有哪些
  • 建设机械网站精英甘肃省兰州市新闻
  • 网站后台补丁如何做如何提高网站开发效率
  • 郑州做网站的联系方式门户网站建设解决方案
  • 计算机网络技术电商网站建设与运营方向做电商网站的
  • 贵州省城市建设厅网站网站设计待遇
  • 做相亲网站的安全责任dede我的网站