使用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
4/6 首页 上一页 2 3 4 5 6 下一页 尾页 |
如果您需转载 使用UNIX命令进行文本处理cat 和 echo,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
|