首页 > UniX技术

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

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

  • 清单 6. 将 DOS 文本文件转换为 UNIX 文本文件
    tr -d '\r' < input_dos_file.txt > output_unix_file.txt
    
          

    尽管 tr 命令表示了 C locale 环境变量(有关这些环境变量更多的信息,可以使用 man locale),但是不要指望它能够对 UTF-8 文档进行任何合理的操作,如能够使用合适的大写字符替换小写重音字符。tr 命令最适合于 ASCII 和其他标准 C 区域设置。

    使用 sed 进行复杂的搜索和替换

    tr 命令所提供的单字符替换(或删除)功能非常适用于特定的解决方案,但是这些功能并不是很灵活。如果您需要将一个单词替换为另一个单词,或将连续的空格和制表符替换为一个空格,那又应该怎么办呢?

    幸运的是,您可以使用 sed 命令 (Stream EDitor),它提供了功能强大的正则表达式 匹配和替换。正则表达式是使用各种构件构建的复杂模式规范,并且随着模式变得越来越复杂,它看起来就像是调制解调器的线路噪声。本文并不打算详细地介绍正则表达式,但是在本文中,您将简单了解 sed 所使用的一些有用的模式。

    在清单 7 中,您可以看到 sed 命令的基本格式。模式是用来匹配输入(通常可以使用管道从另一个程序输入,或者重定向于文本文件)的正则表达式,替换是指插入某些文本并用其代替那些与模式相匹配的文本。标志是用来控制替换行为的单个字符。最常用的标志是 g(将替换应用于所有匹配模式的非重叠实例,而不仅仅是第一个匹配项)。

    实际上,模式和替换可以是各种各样的内容,并且它们之间不需要像在 tr 命令中那样具有 1:1 的关系。


    清单 7. sed 命令
     
    
    sed -e s/pattern/replacement/flags
    
          

    最简单的模式是一个或多个字符组成的字符串。如清单 8 所示,例如将单词 one 替换为单词 another。


    清单 8. 最简单的正则表达式
     
    
    chrish@dhcp3 [334]$ echo "Replace one word" | sed -e s/one/another/
    
    Replace another word
    
          

    可以使用方括号将一个或多个字符括起来,以创建一个集合,该集合中的任何字符都可以匹配。如清单 9 所示,让我们将所有的元音字母替换为下划线。


    清单 9. 匹配集合中的任何字符
     
    
    chrish@dhcp3 [338]$ echo "This is a test" | sed -e s/[aeiouy]/_/g
    
    Th_s _s _ t_st
    
          

    请注意,示例中使用了 g 标志,以便将模式/替换应用于所有的匹配项,而不仅仅是第一个匹配项。

     

     

    sed 命令也可以理解 tr 命令所支持的那些命名字符类,POSIX 对这些字符类进行了定义,但是本文中的语法稍有不同。清单 10 显示了如何替换任何空白字符(制表符、空格等等):


    清单 10. 根据命名字符类匹配内容
     
    
    chrish@dhcp3 [345]$ echo -e 'hello\tthere'   
    
    hello   there
    
    chrish@dhcp3 [346]$ echo -e 'hello\tthere' | sed -e 's/[[:space:]]/, /'
    
    hello, there
    
          
    如果您需转载 使用UNIX命令进行文本处理cat 和 echo,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
    来顶一下
    近回首页
    返回首页
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表
    相关文章
    栏目热门