Объединение двух последовательных строк с использованием 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}'
Ответ 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 $_ - текущая строка $. - номер строки
Ответ 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'"