zoukankan      html  css  js  c++  java
  • awk sed tr替换换行符为逗号,并合并为一行

    在群里看到的。记录以备用。
     sed 帮助命令:http://man.linuxde.net/sed
    文件里有如下行,我想将每行的回车符替换为逗号,并将所有行合并到一行,用awk或sed怎么写啊
    TOP_COLUMN
    TOP_MESSAGE
    TOP_OPTIONS
    TOP_TOPIC
    TOP_VOTE
    TOP_COLTYPE
     
    awk '{{printf"%s,",$0}}'
    sed ':a;N;$!ba;s#
    #,#g'

    N 是下一行,! 对没有影响的行用该命令,$ 最后一行;
    :a 标签
    ba 跳转到标签
    tr "
    "  ",'
     
    tr 命令可能会出现双个逗号(这里换行符替换为逗号),但是已经合并为一行了,所以可以继续替换
     
    cat a.txt | tr "
    " ","  | sed 's/
    /,/g'     
    ## 完整替换
     
    查看文件换行符:
    用软件notepad++

    【视图】——【显示符号】——【显示行尾符】。

    我的操作系统是windows,所以行尾符是CR LF——对应的正则表达式是 。

    mac系统是CR——对应的正则表达式是 。

    unix系统是LF——对应的正则表达式是 。

    sed 命令扩展

    a 在当前行下面插入文本。
    i 在当前行上面插入文本。
    c 把选定的行改为新的文本。
    d 删除,删除选择的行。
    D 删除模板块的第一行。
    s 替换指定字符
    h 拷贝模板块的内容到内存中的缓冲区。
    H 追加模板块的内容到内存中的缓冲区。
    g 获得内存缓冲区的内容,并替代当前模板块中的文本。
    G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
    l 列表不能打印字符的清单。
    n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
    N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
    p 打印模板块的行。
    P(大写) 打印模板块的第一行。
    q 退出Sed。
    b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
    r file 从file中读行。
    t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
    T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
    w file 写并追加模板块到file末尾。  
    W file 写并追加模板块的第一行到file末尾。  
    ! 表示后面的命令对所有没有被选定的行发生作用。  
    = 打印当前行号码。  
    # 把注释扩展到下一个换行符以前。  
    

      

    ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
    $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
    . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
    * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
    [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
    [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
    (..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替换成lovers。
    & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
    < 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
    > 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
    x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
    x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
    x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。
    

      

  • 相关阅读:
    udp用户数据报协议
    java调用url
    mybatis中的#和$的区别
    sun.misc.BASE64Encoder图片编码,并在页面显示
    oracle查看列数据类型
    MyBatis传入多个参数的问题
    ajax详解
    Comparable和Comparator的区别
    谈谈hashcode和equals的用法
    从为什么String=String谈到StringBuilder和StringBuffer
  • 原文地址:https://www.cnblogs.com/cbugs/p/8513490.html
Copyright © 2011-2022 走看看