Ответ 1
awk '!(NR%2){print$0p}{p=$0}' infile
Как мне присоединиться к двум строкам с помощью awk или sed?
for e.g.:
У меня есть данные, которые выглядят так:
abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl
Мне нужен вывод, как показано ниже:
joinabcdabcd
joinefghefgh
joinijklijkl
awk '!(NR%2){print$0p}{p=$0}' infile
awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j<i) {print line[j+1] line[j]; j+=2}}' yourfile
Нет необходимости в sed.
Говорят, что имитация - это самая искренняя форма лести.
Вот решение Perl, вдохновленное кодом awk от Dimitre:
perl -lne 'print "$_$p" if $. % 2 == 0; $p = $_' infile
$_
- текущая строка $.
- номер строки
Здесь он находится в sed:
sed 'h;s/.*//;N;G;s/\n//g' < filename
Некоторое улучшение для "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'"
Вы можете использовать printf с тройным:
awk '{printf (NR%2==0) ? $0 "\n" : $0}'