zoukankan      html  css  js  c++  java
  • 多行变一行实现

    1. 采用awk

    awk BEGIN{RS=EOF}'{gsub(" "," ");print;}' a.txt

          awk BEGIN{RS=EOF}'{gsub(/ /," ");print}' file

          说明:awk默认将记录分隔符(record separator即RS)设置为 ,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将 替换成空格,最后输出。

     

    2. 采用sed

          sed ':a ; N;s/ / / ; t a ; ' file

          说明:sed默认只按行处理,N可以让其读入下一行,再对 进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。

      

    3. cat file | xargs

          说明:这可能是最简单的一种方式。

           This manual page documents the GNU version of xargs. xargs reads argu-

           ments from the standard input, delimited by blanks (which can be pro-

           tected with double or single quotes or a backslash) or newlines

          上面是man手册对xargs的说明。其实xargs就是对shell命令行参数限制做的一个扩展。

          这条命令的含义也很简单,将file中的内容作为参数传给X程序

          如果用echo作为X程序,则命令为:

          cat file | xargs echo

          此命令和cat file | xargs 行为一致,因为xargs的默认行为就是打印输出。

     

    ls |xargs

    默认是输入参数,且换成一行

    ls | xargs -d ‘ ’ echo

    分隔符

    ls |xargs -n 3 echo

    一次给3个参数

    ls |xargs -e ‘22’ echo

    只输出22参数之前的内容,不能-d 公用

    ls |xargs -t echo

    打印之前先打印执行命令

    ls |xargs -I {} echo {}

    ls |xargs -i echo {}

    -I 指定替换符{}, -i 不用指定直接用{} 都是一行一行的给【不-i ,那么多个参数一行给,相当于echo 】

    奋斗为了更好的生活。
  • 相关阅读:
    算法实现:在10个数中选6个数,显示所有组合
    转载:PostgreSQL和MySQL协议简介
    转载:国内外高精地图厂商一览
    使用带key访问iPortalREST服务
    cass启动提示Frame主框架程序没有加载
    设置Gridview单元格内容不换行
    Sql自定义编号唯一性问题
    关于EXCEL数据导入到SQLServer中字段存在NULL的问题
    Gridview显示网格线
    ComboBox自动匹配查找
  • 原文地址:https://www.cnblogs.com/redman274/p/13886681.html
Copyright © 2011-2022 走看看