代码之家  ›  专栏  ›  技术社区  ›  Steven

在Bash中连接行

  •  9
  • Steven  · 技术社区  · 14 年前

    我可以使用一个通用的命令行实用程序(echo、sed、awk等)来连接每一组两行,还是需要从头编写一个脚本/程序来完成这项工作?

    $ cat myFile
    line 1
    line 2
    line 3
    line 4
    
    $ cat myFile | __somecommand__
    line 1line 2
    line 3line 4
    
    5 回复  |  直到 12 年前
        1
  •  11
  •   Didier Trosset    14 年前
    sed 'N;s/\n/ /;'
    

    抓取下一行,并用空格替换换行符。

    seq 1 6 | sed 'N;s/\n/ /;'
    1 2
    3 4
    5 6
    
        2
  •  8
  •   ghostdog74    14 年前
    $ awk 'ORS=(NR%2)?" ":"\n"' file
    line 1 line 2
    line 3 line 4
    
    $ paste - -  < file
    line 1  line 2
    line 3  line 4
    
        3
  •  1
  •   kanaka    14 年前

    cat myFile | while read line; do echo -n $line; [ "${i}" ] && echo && i= || i=1 ; done
    
        4
  •  1
  •   codaddict    14 年前

    您还可以将Perl用作:

    $ perl -pe 'chomp;$i++;unless($i%2){$_.="\n"};' < file
    line 1line 2
    line 3line 4
    
        5
  •  1
  •   Dennis Williamson    14 年前

    以下是不需要切换标志的shell脚本版本:

    while read line1; do read line2; echo $line1$line2; done < inputfile