Одним из способов использования POSIXly может быть:
sed -e '
/./!d
$ba
N
/\n$/!{H;s/.*//;x;D;}
:a;s/\n//g
' input.txt
Вход:
% cat -ne input.txt
1 $
2 $
3 john,$
4 5901,$
5 open$
6 $
7 $
8 $
9 lina,$
10 2401,$
11 open$
12 $
13 jody,$
14 5401,$
15 open$
Выход:
john,5901,open
lina,2401,open
jody,5401,open
Пояснение:
sed
видит не -пустую строку (, подойдет любой символ, даже пробел ), он начинает добавлять его в пространство шаблонов и считывает следующую строку. :a
, в которой мы быстро удаляем новые строки из пространства шаблонов и распечатать на стандартный вывод. /\n$/
, мы возвращаемся назад и добавляем следующую строку. Это мы делаем с помощью команды D
, которая передает управление в начало кода sed
. Но перед этим он очищает все до первой новой строки в пространстве шаблонов. с этим мы справимся, поместив артефакт \n
на H;s/.*//;x
. Программа who
является частью пакета coreutils
. Вы можете использовать apk add coreutils
для его установки:
# which who
#
# apk add coreutils
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/community/x86_64/APKINDEX.tar.gz
(1/3) Installing libacl (2.2.53-r0)
(2/3) Installing libattr (2.4.48-r0)
(3/3) Installing coreutils (8.31-r0)
Executing busybox-1.31.1-r8.trigger
OK: 7 MiB in 17 packages
#
# which who
/usr/bin/who
#