我知道如何将文件中的行转换为列,但我想将文件下半部分的行追加到上半部分的行。
像:
A1
A2
A3
B1
B2
B3
到
A1 | B1
A2 | B2
A3 | B3
该列表来自两个grep
。我将第一个grep
附加到第二个grep
。这两个{{1}}具有相同的点击量。
我想在bash脚本中执行此操作。
答案 0 :(得分:2)
如何将head
和tail
与paste
结合使用?
paste -d'|' <(head -3 file) <(tail -3 file)
它返回:
A1|B1
A2|B2
A3|B3
paste
合并文件行。如果我们提供来自同一文件的不同行......那就是全部!
因为从一半的行中获取head
而从其余行中获取tail
,这是一种更通用的方式:
paste -d'|' <(head -n $(($(wc -l <file)/2)) file)
<(tail -n $(($(wc -l <file)/2)) file)
答案 1 :(得分:2)
答案 2 :(得分:2)
$ 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
答案 3 :(得分:1)
作为替代方案:
awk 'BEGIN{c=0}
{a[c++] = $1}
END { for (i = 0; i < c/2; i++) print a[i] " " a[i+c/2]}'
这假设你有一个偶数行作为输入。