Вам необходимо добавить путь библиотеки PT7 к вашим переменным среды, как показано ниже:
export LD_LIBRARY_PATH:/opt/pt/lib
или
добавьте следующую строку в / etc / ld.so.conf.d / 10-local.conf
:
/opt/pt/lib
Вы думаете в правильном направлении:
Я пытаюсь создать условие (если столбцы 2 и 3 пусты, сделайте что-нибудь)
В частности,
awk
способов сделать это) Так, например,
awk -F, '$2=="" && $3=="" {pfx=$1; next} {print pfx "," $0}' file.csv
или более идиоматически с использованием переменной разделителя полей FS
awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0; print}' file.csv
или (поскольку действие по умолчанию - когда правило оценивается как истина или 1
- это распечатать запись)
awk -F, '$2=="" && $3=="" {pfx=$1; next} {$0 = pfx FS $0} 1' file.csv
John,bim,bam,boom
John,tim,tam,toom
John,lam,loom,lim
Mary,pam,pim,poom
Mary,dam,dim,doom
Альтернатива Perl:
$ perl -F',' -lane 'if(@F == 1){$prefix = sprintf("%s,",@F);next;};print $prefix . $_' input.csv
John,bim,bam,boom
John,tim,tam,toom
John,lam,loom,lim
Mary,pam,pim,poom
Mary,dam,dim,doom
Это работает при условии, что каждая строка разделена на массив элементов с использованием ,
в качестве оператора и если в этом массиве только один элемент, мы используем эту строку как префикс и переходим к следующей строке. К другим строкам, длина которых превышает 1 элемент, будет добавлен префикс. Естественно, префикс изменяется тогда и только тогда, когда массив имеет длину 1.
Или короче, используя shift
, как предложил Гленн Джекман:
$ perl -F',' -lane 'if(@F == 1){$prefix = shift @F;next;};print $prefix . "," . $_' input.csv
или
$ perl -F, -lane '$,=","; if (1 == @F) {$name = shift @F} else {print $name, @F}' input.csv