Вывод в формате CSV

outer &создает подоболочку. $!дает PID этой подоболочки.

tail -f /dev/nullявляется дочерним элементом этой подоболочки, поэтому у него другой PID. Но вы можете сделать

exec tail -f /dev/null

вместо этого. Затем killпопадает в tail.

Другая возможность заключается в использовании /bin/killвместо встроенной оболочки. С отрицательным числом в качестве аргумента вы можете убить всю группу процессов:

/bin/kill -TERM -$!
1
11.12.2019, 17:43
2 ответа

На самом деле правильный подход — считать сзади. На GNU awkможно попробовать

awk -F ";" '{last=NF; while ($last ~ /^[[:space:]]*$/) last--; new=last+1; $new=$last; $last="StaticValue"; print}' in.csv  > out.csv

, который определит последнее «не -пустое» поле путем сопоставления RegExp и вставки --точно так же, как вы сделали --«статическое значение» перед этим.

Для mawkтребуется небольшая модификация синтаксиса:

awk -F ";" '{last=NF; while ($last ~ /^ *$/) last--; new=last+1; $new=$last; $last="StaticValue"; print}' in.csv  > out.csv
0
27.01.2020, 23:40

Все, что вам нужно, это:

$ awk '{gsub(/;/,FS); $NF="StaticValue " $NF} 1' file
Test User StaticValue WKCVW432994
Test Users Middlename StaticValue WEJDFH34992
Test Some Weird Guy StaticValue WEFDJJ23453
Test Some Even Weirder Guy StaticValue WEFDJJ23453

Описанное выше будет работать при использовании любого awk в любой оболочке на каждом компьютере UNIX.

1
27.01.2020, 23:40

Теги

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