Как объединить последовательные пары ячеек в столбце, добавив вторую ячейку каждой пары к первой.

Например:

santhosh
kumar
sagar
sv
sai
deva

И результат должен быть:

santhoshkumar
sagarsv
saidevax

3 ответа3

1

Если у вас есть sed, вы можете сделать это следующим образом:

sed 'N;s/\r\?\n//' myfile.txt

Объяснение: sed читает в файле построчно. «N» добавляет следующую строку (т. Е. Строку 2, если мы в данный момент находимся на строке 1) в буфер, тогда нам нужно удалить «новую строку», которая находится между двумя строками, которые мы сейчас имеем в буфере. Команда 's' заменяет некоторый текст в строке (как указано между первой и второй косой чертой) другим текстом (указывается между второй и третьей косой чертой) - в этом случае мы хотим заменить строку, заканчивающуюся ничем.

В конце строки Unix-типа это делается путем удаления перевода строки '\n', но если это документ типа Windows, тогда переводу строки предшествует возврат каретки '\r'. Так что? является 'необязательным \r', где экранированный знак вопроса означает, что предыдущий символ может существовать или не существовать.

0

В Vi/Vim вы можете сделать что-то вроде этого:

:g/./j!

Что в основном означает, что делать (:g/) для каждой непустой строки (.) И соединять ее со следующей, не добавляя завершающие пробелы (j!)

Узнайте больше на помощь

:h :g
:h :j
:h /.
0

Учитывая тег gvim , я предполагаю, что вы используете редактор gvim или vim . Попробуйте макрос:

:map q Jxjq

J j соединяет две строки, оставляя пробел; x удаляет это пространство, а j перемещается на следующую строку. q в конце повторяет процесс; он соответствует q после команды :map .

Это макрос старой школы vi ; Мне не нужно было изучать более широкие и функциональные возможности макросов vim .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .