Как объединить каждые две строки в одну

В качестве альтернативы ожиданию выхода из спящего режима можно использовать команду wait:

sleep 2 &
pid=$!
sleep 1 &
pid_sleep=$!

wait $pid $pid_sleep
echo "commands finished"
2
03.09.2019, 13:29
2 ответа

Обратите внимание, что это не имеет ничего общего с сортировкой. Это просто соединение линий вместе.

Эти решения предполагают, что вы всегда хотите соединять строки попарно.

Использование стандартаsed:

$ sed 'N; s/\n/ /' file
~path1/file1.txt ~path1/file1_newname par1 par2 par 53
~path1/file2.txt ~path1/file2_newname par1 par2
~path1/file3.txt ~path1/morepath/file3_newname par31 par121
~path2/file1.txt ~path2/file1_newname par87
~path2/file3.txt ~path2/file3_newname par1
~path2/file4.txt ~path2/file4_newname par2 par3 par4
~path3//path4/file3.txt ~path3/file4_newname par13

Короткий сценарий редактирования sedбудет читать строку и добавлять следующую строку с помощью команды N. Добавленная строка будет добавлена ​​в пространство шаблона («рабочий буфер» )со встроенным символом новой строки, поэтому замените его пробелом с заменой перед печатью строки.

Или, сpaste:

$ paste -d ' ' - - <file
~path1/file1.txt ~path1/file1_newname par1 par2 par 53
~path1/file2.txt ~path1/file2_newname par1 par2
~path1/file3.txt ~path1/morepath/file3_newname par31 par121
~path2/file1.txt ~path2/file1_newname par87
~path2/file3.txt ~path2/file3_newname par1
~path2/file4.txt ~path2/file4_newname par2 par3 par4
~path3//path4/file3.txt ~path3/file4_newname par13

Это запрашивает pasteсоздать два столбца вывода с пробелом в -между ними. Столбцы считываются из строк на входе, создавая эффект попарного соединения строк.

Сawk:

$ awk '{ getline nextline; print $0, nextline }' file
~path1/file1.txt ~path1/file1_newname par1 par2 par 53
~path1/file2.txt ~path1/file2_newname par1 par2
~path1/file3.txt ~path1/morepath/file3_newname par31 par121
~path2/file1.txt ~path2/file1_newname par87
~path2/file3.txt ~path2/file3_newname par1
~path2/file4.txt ~path2/file4_newname par2 par3 par4
~path3//path4/file3.txt ~path3/file4_newname par13
2
27.01.2020, 22:08

Если я вас правильно понял, я думаю, это могло бы сработать для вас (с использованием GNUsed):

sed '1~2N;s/\n/ /' file
0
27.01.2020, 22:08

Теги

Похожие вопросы