Конкатенация каждой второй строки со следующей - PullRequest
27 голосов
/ 24 января 2012

В текстовом документе я хочу объединить каждую следующую строку со следующей. Я полагаю, что sed - это то, что нужно использовать? Как это будет сделано?

Ответы [ 5 ]

24 голосов
/ 24 января 2012

Это проще всего использовать paste:

paste -s -d' \n' input.txt 

Хотя есть Famous Sed One-Liner (38) для эмуляции, как в ответ потонга .

22 голосов
/ 24 января 2012

Если вы действительно не настаиваете на том, чтобы его нужно было использовать, просто пропустите его через

paste -d" " - -

12 голосов
/ 24 января 2012

Это может работать для вас:

seq 10 | sed '$!N;s/\n/ /'
1 2
3 4
5 6
7 8
9 10

Если строка не последняя, ​​добавьте следующую строку к текущей строке и замените новую строку пробелом.

2 голосов
/ 24 января 2012

Простое awk решение:

awk '{getline b;printf("%s %s\n",$0,b)}' file

Тест:

[jaypal:~/Temp] seq 11 > file
[jaypal:~/Temp] awk '{getline b;printf("%s %s\n",$0,b)}' file
1 2
3 4
5 6
7 8
9 10
11 
1 голос
/ 24 января 2012

Что вы подразумеваете под «в текстовом документе»? Если вы редактируете файл с помощью vim, вы можете сделать:

:g/./normal J
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...