Объединение двух последовательных строк с использованием awk или sed

Как мне присоединиться к двум строкам с помощью awk или sed?

for e.g.:

У меня есть данные, которые выглядят так:

abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl

Мне нужен вывод, как показано ниже:

joinabcdabcd
joinefghefgh
joinijklijkl

Ответы

Ответ 1

awk '!(NR%2){print$0p}{p=$0}' infile

Ответ 2

awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j<i) {print line[j+1] line[j]; j+=2}}' yourfile

Нет необходимости в sed.

Ответ 3

Говорят, что имитация - это самая искренняя форма лести.
Вот решение Perl, вдохновленное кодом awk от Dimitre:

perl -lne 'print "$_$p" if $. % 2 == 0; $p = $_' infile

$_ - текущая строка
$. - номер строки

Ответ 4

Здесь он находится в sed:

sed 'h;s/.*//;N;G;s/\n//g' < filename

Ответ 5

Некоторое улучшение для "sed" script выше, которое займет следующее: 1008
-2734406,132904 2846
-2734414,838455 4636
-2734413,594009 6456
-2734417,316269 8276
-2734414,779617

  and make it :    

1008 -2734406.132904
2846 -2734414.838455
4636 -2734413.594009
6456 -2734417.316269
8276 -2734414.779617

  the "sed" is : "sed 'h;s/.*//;G;N;s/\n/ /g'"

Ответ 6

Вы можете использовать printf с тройным:

    awk '{printf (NR%2==0) ? $0 "\n" : $0}'