$ awk -v OFS=',' '/^die$/ { print substr(lines,2); lines=""; next } { lines=lines OFS $0 }' file
john doe,555-666-333,john@gmail.com
jane doe,Beverly Hills,444-333-111,jane@gmail.com
То же самое относится и к данным, содержащим запятые (см. конец моего ответа ниже ). Если данные содержат запятые, вы можете использовать это:
awk -v OFS=',' '
/^die$/ { print substr(lines,2); lines=""; next }
/,/ { $0=sprintf("\"%s\"", $0 ) }
{ lines=lines OFS $0 }' file
Код создает строку в lines
, разделеннуюOFS
(запятой ). Когда слово die
встречается в строке само по себе, выводится строка из lines
. Вызов substr()
удаляет запятую, которая была добавлена перед строкой, когда первое поле записи было добавлено к строке. Строки с запятыми обрабатываются так же, как в моем коде ниже.
Используя GNU awk
или mawk
, но не BSD awk
, вы также можете
mawk -v RS='\ndie\n' -v FS='\n' -v ORS='\n' -v OFS=',' '{$1=$1;print}' file
Это не приведет к созданию полей в кавычках для данных, содержащих запятые.
Параметр $1=$1
заставляет awk
повторно -формировать запись в соответствии с переменнымиOFS
(разделителя выходных полей )иORS
(разделителя выходных записей )перед выводом.
Ответ перед обновлением на вопрос:
paste -d, - - - - <file
Это даст
john doe,555-666-333,john@gmail.com,die
jane doe,444-333-111,jane@gmail.com,die
Для удаления строк die
(они совершенно не нужны):
paste -d, - - - - <file | cut -d, -f 1-3
Описанное выше работает, если исходные данные не содержат запятых.
Вы также можете отфильтровать строки die
с самого начала:
sed '/^die$/d' file | paste -d, - - -
Это будет работать, даже если исходные данные содержат запятые.
Если данные содержат запятые, вы можете предварительно обработать их, чтобы добавить кавычки вокруг этих строк.:
awk '/^die$/ { next } /,/ { $0=sprintf("\"%s\"", $0 ) } 1' file | paste -d, - - -
Учитывая файл
john doe
555-666-333
john@gmail.com
die
jane doe
444-333-111
jane@gmail.com
die
Me, myself and I
000-000-000
myself@example.com
эта последняя команда сгенерирует
john doe,555-666-333,john@gmail.com
jane doe,444-333-111,jane@gmail.com
"Me, myself and I",000-000-000,myself@example.com
У меня была такая же проблема с библиотекой AWT -в системе Mobian -LXDE -(https://wiki.mobian-project.org/doku.php?id=desktopenvironments#lxde). Решение было таким же простым, как установка пакета default-jre
.
Кредиты идут:
https://stackoverflow.com/questions/5241850/running-java-gui-applications-through-a-linux-terminal/5242043#5242043
У меня не было возможности протестировать Fedora -GNOME.
ОБНОВЛЕНИЕ
проблема, похоже, полностью исчезла dnf update
на моем Fedora -GNOME или была решена с помощью связанного пакета KDE -Plasma -5 -, который был установлен/обновлен с помощью две среды рабочего стола.