将行Bash到列

将行Bash到列,bash,awk,sed,grep,transpose,Bash,Awk,Sed,Grep,Transpose,我知道如何将文件中的行转换为列,但我想将文件下半部分的行附加到上半部分的行 比如: 到 该列表来自两个grep。我将第一个grep附加到第二个grep。两个grep的点击量相同 我想在bash脚本中执行此操作。如何将头部和尾部与粘贴结合在一起 粘贴合并文件行。如果我们从同一个文件中提供不同的行。。。就这些 由于这是一个从一半线条中获取头部,从其余线条中获取尾部的问题,因此这是一种更通用的方法: paste -d'|' <(head -n $(($(wc -l <file)/2)) f

我知道如何将文件中的行转换为列,但我想将文件下半部分的行附加到上半部分的行

比如:

该列表来自两个grep。我将第一个grep附加到第二个grep。两个grep的点击量相同

我想在bash脚本中执行此操作。

如何将头部和尾部与粘贴结合在一起

粘贴合并文件行。如果我们从同一个文件中提供不同的行。。。就这些

由于这是一个从一半线条中获取头部,从其余线条中获取尾部的问题,因此这是一种更通用的方法:

paste -d'|' <(head -n $(($(wc -l <file)/2)) file) 
            <(tail -n $(($(wc -l <file)/2)) file)

作为替代方案:

awk 'BEGIN{c=0}
     {a[c++] = $1}
     END { for (i = 0; i < c/2; i++) print a[i] " " a[i+c/2]}'
这假设您有偶数行作为输入。

您正在寻找该工具:


试着给你的greps等更多的上下文,这样我们可以提供更好的答案。另外,到目前为止您尝试了什么?在Solaris上:pr-2-T-s |->pr:invalize option-T和pr-2-s |->pr:invalign option-|。这是GNU公共关系还是什么?
paste -d'|' <(head -3 file) <(tail -3 file)
A1|B1
A2|B2
A3|B3
paste -d'|' <(head -n $(($(wc -l <file)/2)) file) 
            <(tail -n $(($(wc -l <file)/2)) file)
awk 'BEGIN{c=0}
     {a[c++] = $1}
     END { for (i = 0; i < c/2; i++) print a[i] " " a[i+c/2]}'
printf "%s\n" {A,B}{1,2,3}   |   pr -2 -T -s" | "
A1 | B1
A2 | B2
A3 | B3
$ awk '{a[NR]=$0} END{ m=NR/2; for (i=1;i<=m;i++) print a[i] " | " a[i+m]}' file
A1 | B1
A2 | B2
A3 | B3