在 n 行后并排移动文本

Dan*_*Dan 5 bash awk

我正在尝试在文本间隙后并排移动文本。

我的例子是

684 0.00000 
685 0.00000 
686 0.99490 

684 0.00000 
685 0.00000 
686 0.76000
Run Code Online (Sandbox Code Playgroud)

我希望文本如下

684 0.00000 684 0.00000 
685 0.00000 685 0.00000 
686 0.99490 686 0.76000
Run Code Online (Sandbox Code Playgroud)

我已经尝试过,但这并没有产生所需的输出。

awk 'NR%1{printf "%s ",$0;next;}'1 file.txt 
Run Code Online (Sandbox Code Playgroud)

任何帮助或协助将不胜感激。

Ed *_*ton 7

使用任何 awk:

$ cat tst.awk
(NR == 1) || !NF {
    numCols++
    numRows = 0
}
NF {
    vals[++numRows,numCols] = $0
}
END {
    for ( rowNr=1; rowNr<=numRows; rowNr++ ) {
        for ( colNr=1; colNr<=numCols; colNr++ ) {
            printf "%s%s", vals[rowNr,colNr], (colNr<numCols ? OFS : ORS)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

$ awk -f tst.awk file
684 0.00000 684 0.00000
685 0.00000 685 0.00000
686 0.99490 686 0.76000
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止,唯一符合请求输出的解决方案。我希望不会少`:)` (3认同)