我有如下数据:
abcd
join abcd
efgh
join efgh
我想将两个连续的对连接成一条线。结果:
abcd join abcd
efgh join efgh
我怎样才能在 Perl/AWK 中做到这一点?
$ sed 'N;s/\n/ /' input.txt
abcd join abcd
efgh join efgh
最简单的方法是:
paste - - < FILE
这使用空格而不是制表符连接:
paste -d" " - - < FILE
珀尔:
perl -pe's/\n/ / if $. % 2' file
高尔夫挑战:将上述内容缩短 5 个字符。
高尔夫挑战解决方案:
perl -pe'$.%2&&s/
/ /' file
cat input | paste -sd' \n'
如果给出列表,则粘贴在分隔符之间交替。
我的第一直觉:
perl -lne 'if ($. % 2) { $last = $_; } else { print "$last $_" }'
受@kev 的 sed 解决方案启发的更简洁的版本:
perl -lpe '$_ .= " " . <>; chomp'
但我认为 sed 赢得了这一轮。
awk '{getline a; printf "%-s\n", $0 " " a}' file