加入一对具有特定起点的线

时间:2014-04-06 18:54:57

标签: linux sed

我知道用sed我可以打印

cat current.txt | sed 'N;s/\n/,/'  > new.txt
A
B
C
D
E
F

A,B
C,D
E,F

我想做的是:

A
B
C
D
E
F

A,D
B,E
C,F

我希望加入1加4,2加5,3加6等等。 这可能与sed有关吗?知道如何实现它吗?

谢谢。

3 个答案:

答案 0 :(得分:7)

尝试在列中打印:

pr -s, -t -2 current.txt

答案 1 :(得分:0)

这比我希望的要长,但是:

$ lc=$(( $(wc -l current.txt | sed 's/ .*//') / 2 ))
$ paste <(head -"$lc" current.txt) <(tail -"$lc" current.txt) | column -t -o,

变量lc存储current.txt中的行数除以2。然后headtail分别用于打印lc第一行和lc最后一行(即文件的第一半和第二半);然后使用paste将两者放在一起,并将column更改标签设置为逗号。

答案 2 :(得分:0)

awk版本

awk '{a[NR]=$0} NR>3 {print a[NR-3]","$0}' current.txt
A,D
B,E
C,F

如果您喜欢其他间隔,此解决方案很容易调整 只需将NR>3NR-3更改为所需的号码。