Разделите на файл с первым именем колонки

«Первая форма» - это ... особенность groff . Если ваш "nroff" не является оболочкой для groff , вы увидите только вторую форму.

Эта функция упоминается на странице руководства для grotty (драйвер groff для устройств, подобных пишущей машинке):

По умолчанию grotty испускает escape-последовательности SGR (из ISO 6429, также называемые переходами цвета ANSI), чтобы изменить атрибуты текста (полужирный, курсив, цвета).Это позволяет иметь восемь различных цветов фона фона и переднего плана; кроме того, можно использовать полужирный и курсивный атрибуты одновременно (с использованием шрифта BI).

На практике это не работает, например, посмотрите, как тот же комментарий (постобработка этих последовательностей) неправильно отображается здесь :

По умолчанию, grotty испускает Escape-последовательности SGR (из ISO 6429, также называемые цветовыми escape-символами ANSI) для изменения атрибутов текста (жирный, курсив, цвета). Это позволяет иметь восемь различных цветов M [зеленый] backgroundM [] и m [красный] foregroundm [] ; дополнительно можно использовать полужирный и курсивный атрибуты BI] одновременно] (с использованием шрифта BI).

, и по этой причине некоторые разработчики предпочитают не использовать его (например, это обсуждение из списка рассылки Emacs).

Однако, как написано на странице руководства «По умолчанию» . Итак, если у вас есть groff, он должен создавать эти escape-последовательности.

Упаковщики могут применять исправления для модификации программ. В комментарии @muru упоминается версия в Debian (см. отчеты об ошибках и страницу пакета ). Журнал изменений пакета говорит следующее:

 -- Colin Watson   Sat, 27 Jul 2002 18:41:46 +0100
groff (1.18-1) unstable; urgency=low 

  * Disable the new ANSI colour/bold/underline escapes in nroff mode,
    because most pagers either fail to cope with it or need special options
    to do so. It can be re-enabled by editing /etc/groff/man.local and
    /etc/groff/mdoc.local, or by setting the environment variable GROFF_SGR
    to something non-empty.

Однако в источнике groff не упоминается GROFF_SGR ; в нем есть только ссылки на GROFF_NO_SGR :

./NEWS:1108:  for the GROFF_NO_SGR environment variable also.
./NEWS:1450:o If the environment variable GROFF_NO_SGR is set, SGR output is disa...
./PROBLEMS:33:  1. Set the GROFF_NO_SGR environment variable.
./doc/webpage.ms:1920:.  URL #GROFF_NO_SGR GROFF_NO_SGR
./doc/webpagewebpage.ms:1922:. nop GROFF_NO_SGR
./doc/webpagewebpage.ms:2437:.TAG GROFF_NO_SGR        
./doc/webpagewebpage.ms:2439:If the environment variable GROFF_NO_SGR is set, SGR output is 
./src/devices/grotty/grotty.man:126:.B GROFF_NO_SGR
./src/devices/grotty/grotty.man:394:.B GROFF_NO_SGR
./src/devices/grotty/tty.cpp:864:  if (getenv("GROFF_NO_SGR"))

, а в журнале изменений (ChangeLog.118) нет подсказки:

2002-02-12  Werner LEMBERG  

        * src/libs/libgroff/Makefile.sub (snprintf.o): Don't use
        $(COMPILE.c) to not include groff's assert.h.        
        * src/drivers/grotty/tty.cc (main): Add GROFF_NO_SGR environment
        variable.                           
        * NEWS, src/drivers/grotty/grotty.man: Document it. 

Параметр GROFF_NO_SGR не будет давать последовательности SGR (справочная страница верна) .Комментарий журнала изменений Debian относится к этому фрагменту из /etc/groff/man.local , где Debian добавил проверку для переменной GROFF_SGR :

.  \" Debian: Disable the use of SGR (ANSI colour) escape sequences by
.  \" grotty. 
.  if '\V[GROFF_SGR]'' \
.    output x X tty: sgr 0

и установка переменной среды делает он генерирует последовательности SGR для жирного шрифта и т. д.

0
16.07.2018, 04:58
2 ответа

Дано

$ cat > file.csv
"Product ID";"Product Name";"Price";"Description";
"11;"Example";"200";"Descripcion here...";
"21;"Example2";"300";"Some here...";

затем

$ awk -F';' 'NR>1 {print "{" $0 "}" > substr($1,2) ".csv"}' file.csv

приводит к

$ head ??.csv
==> 11.csv <==
{"11;"Example";"200";"Descripcion here...";}

==> 21.csv <==
{"21;"Example2";"300";"Some here...";}
1
28.01.2020, 02:42
$ awk -F';' '{file=substr($1,2)".csv";if(NR>1){print $0 > file}}' inputFile

Используйте substr, чтобы получить имя файла и добавить к нему .csv, и NR>1, чтобы игнорировать заголовок и, наконец, записать в файл.

$ head *csv

==> 11.csv <==
"11;"Example";"200";"Descripcion here...";

==> 21.csv <==
"21;"Example2";"300";"Some here...";
0
28.01.2020, 02:42

Теги

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