С пасты
:
$ echo '********************************' | paste -sd$'\n' file1 - file2
В awk
с помощью $N
можно прямо в поля назначить номер поля для N
: $9 = "YES"
добавит в конец новое поле со значением "YES"
:
awk -F, -v OFS=, '{ if ($5 > 5) { $9 = "YES" } else {$9 = "NO"} };1' data
При присваивании в $9
мы создаем девятое поле, которое для этих данных является одним за концом. Поставив в конце 1
силы awk
, мы получим выход по умолчанию, который в противном случае мы бы подавили.
Для вашего примера вышеприведенное дает:
,2013-11-22,12.9,26.0,26.6,,,NW,YES
то, что я думаю, является тем, что вы хотели.
Если вы хотите, чтобы это было последнее поле, независимо от того, сколько полей нужно было начать, мы можем использовать количество полей NF
, убедившись, что мы выходим за его пределы:
awk -v OFS=, -F, '{ if ($5 > 5) {$(NF+1)="YES"} else {$(NF+1)="NO"} };1' data
$
принимает любое числовое выражение, поэтому мы можем добавить одно к NF
, чтобы получить доступ к следующему доступному полю.
Более короткое решение awk
:
$ awk -F',' '$(NF+1) = $5 > 0 ? "YES" : "NO"' OFS=',' file
Если ваш файл содержит windows
символ новой строки, вы можете удалить его:
$ awk -F',' '{sub(/\r$/,"")} $(NF+1) = $5 > 0 ? "YES" : "NO"' OFS=',' file