使用Perl / AWK将两条连续线放入一条线

时间:2012-04-19 01:16:36

标签: linux perl unix text awk

我有如下数据:

abcd
join abcd
efgh
join efgh

我想将两个连续的对加入一行。 所得:

abcd join abcd
efgh join efgh

如何在Perl / AWK中完成?

6 个答案:

答案 0 :(得分:13)

$ sed 'N;s/\n/ /' input.txt
abcd join abcd
efgh join efgh

答案 1 :(得分:7)

最简单的方法是:

paste - - < FILE

这是使用空格而不是制表符连接:

paste -d" " - - < FILE

答案 2 :(得分:4)

的Perl:

perl -pe's/\n/ / if $. % 2' file

高尔夫挑战:将上述内容缩短5个字符。

高尔夫挑战赛解决方案:

perl -pe'$.%2&&s/
/ /' file

答案 3 :(得分:3)

cat input | paste -sd' \n'

如果给出了列表,则粘贴在分隔符之间交替。

答案 4 :(得分:2)

我的第一直觉:

perl -lne 'if ($. % 2) { $last = $_; } else { print "$last $_" }'

受@ kev的sed解决方案启发的更简洁的版本:

perl -lpe '$_ .= " " . <>; chomp'

但我认为sed赢了这一轮。

答案 5 :(得分:2)

awk '{getline a; printf "%-s\n", $0 " " a}' file