首页 > UniX技术

使用UNIX命令进行文本处理cat 和 echo

时间:2009-04-15 17:57:39  作者:chinaitlab  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
UNIX......

echo 命令的 -e 标志用来告诉该命令扩展 C 风格的转义字符,在本示例中,它会把 \t 转换为制表符。

您还可以使用“.”(点号)匹配任何单个的字符。如果您需要处理一些略有变化的数据,或者包含难以进行转义的特殊字符的数据,那么使用这个符号是非常方便的。例如,在匹配引号时,我经常使用 .,所以我不需要在 Shell 中对引号进行转义。清单 11 显示了一个正则表达式初学者在使用这个模式时出现的问题。


清单 11. 这可能并不是想要的结果
 

chrish@dhcp3 [339]$ echo "This is a test" | sed -e s/./_/g

______________

      

既然您已经了解了这些非常基本的内容,下面介绍一些附加模式修饰符,要使用高级 正则表达式,您现在还可以使用 -E 选项代替 -e。? 字符表示匹配前面模式元素的零个或一个实例,* 字符表示匹配前面元素的零个或多个实例。 字符表示匹配一个或多个前面的元素。^ 字符匹配行首,而 $ 则匹配行尾。清单 12 显示了实际应用中的情况。


清单 12. 实际应用中的多个匹配项
 

chrish@dhcp3 [356]$ echo "hellooooo" | sed -E 's/o?$/_/g'

helloooo_

chrish@dhcp3 [357]$ echo "hellooooo" | sed -E 's/o*$/_/g'

hell_

chrish@dhcp3 [358]$ echo "hellooooo" | sed -E 's/o $/_/g'

hell_

      

如果使用圆括号将模式元素括起来,您可以在替换字符串中使用匹配的内容。这些元素称为组,它们使得正则表达式搜索和替换操作的功能变得非常强大,但是却很难理解。例如,在清单 13 中,您匹配一个或多个 l (el) 字符,并且后面跟着零个或多个 o 字符。依次使用第二组和第一组中的内容对其进行替换,实际上是对它们进行交换。请注意这个模式中各个组的引用方法,即反斜杠加上该组的序号。


清单 13. 匹配组
 

chrish@dhcp3 [361]$ echo "hellooooo" | sed -E 's/(l )(o*)$/\2\1/g'

heoooooll

      

通过在大括号中指定匹配的数目,您可以匹配特定数目的模式。例如,模式 o{2} 将匹配两个(仅仅两个)o 字符。

对了,还有最后一个内容,通过使用 \ 字符对其进行转义,您可以在模式中使用这些特殊字符的字面内容(即作为其本身)。

将其组合在一起

既然已经向您介绍了一些非常简单的正则表达式,那么让我们来尝试一些有用的内容。给定 ls -l(文件长 清单)的输出,您将从中提取权限信息、大小和名称。清单 14 显示了要进行处理的 ls -l 输出示例。


清单 14. ls -l 的典型输出
 

chrish@dhcp3 [365]$ ls -l | tail

drwx------   3 chrish    wheel   102 Jun 14 21:38 gsrvdir501

drwxr-xr-x   2 chrish    wheel    68 Jun 16 16:01 hsperfdata_chrish

drwxr-xr-x   3 root      wheel   102 Jun 14 23:38 hsperfdata_root

-rw-r--r--   1 root      wheel   531 Jun 14 10:17

 illustrator_activation.plist

-rw-r--r--   1 root      wheel   531 Jun 14 10:10 indesign_activation.plist

-rw-------   1 nobody    wheel    24 Jun 16 16:01 objc_sharing_ppc_4294967294

-rw-------   1 chrish    wheel   132 Jun 16 23:50 objc_sharing_ppc_501

-rw-------   1 security  wheel    24 Jun 16 10:04 objc_sharing_ppc_92

-rw-r--r--   1 root      wheel   531 Jun 14 10:05 photoshop_activation.plist

-rw-r--r--   1 root      wheel   928 Jun 14 10:17 serialinfo.plist

      
如果您需转载 使用UNIX命令进行文本处理cat 和 echo,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门