Заменить значение в определенных столбцах в CSV-файле - PullRequest
0 голосов
/ 22 февраля 2019

Я хотел бы заменить значения, которые> 20 в столбцах 5 и 7, на AAA

входной файл

9179,22.4,-0.1,22.4,2.6,0.1,2.6,39179
9179,98.1,-1.7,98.11,1.9,1.7,2.55,39179
9179,-48.8,0.5,48.8,-1.2,-0.5,1.3,39179
6121,25,0,25,50,0,50,36121
6123,50,0,50,50,0,50,36123
6125,75,0,75,50,0,50,36125

output desired

9179,22.4,-0.1,22.4,2.6,0.1,2.6,39179
9179,98.1,-1.7,98.11,1.9,1.7,2.55,39179
9179,-48.8,0.5,48.8,-1.2,-0.5,1.3,39179
6121,25,0,25,AAA,0,AAA,36121
6123,50,0,50,AAA,0,AAA,36123
6125,75,0,75,AAA,0,AAA,36125

Я пытался

С помощью этой команды я заменяю значения в столбце 5, как это сделать и для столбца 7.

awk -F ',' -v OFS=',' '$1 { if ($5>20) $5="AAA"; print}' file

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вот еще один способ сделать набор столбцов настраиваемым

$ awk -v cols="5,7" 'BEGIN {FS=OFS=","; split(cols,a)} 
                           {for(i in a) if($a[i]>20) $a[i]="AAA"}1' file 

9179,22.4,-0.1,22.4,2.6,0.1,2.6,39179
9179,98.1,-1.7,98.11,1.9,1.7,2.55,39179
9179,-48.8,0.5,48.8,-1.2,-0.5,1.3,39179
6121,25,0,25,AAA,0,AAA,36121
6123,50,0,50,AAA,0,AAA,36123
6125,75,0,75,AAA,0,AAA,36125
0 голосов
/ 22 февраля 2019
awk 'BEGIN{FS=OFS=","} $5>20{$5="AAA"} $7>20{$7="AAA"}1' file
9179,22.4,-0.1,22.4,2.6,0.1,2.6,39179
9179,98.1,-1.7,98.11,1.9,1.7,2.55,39179
9179,-48.8,0.5,48.8,-1.2,-0.5,1.3,39179
6121,25,0,25,AAA,0,AAA,36121
6123,50,0,50,AAA,0,AAA,36123
6125,75,0,75,AAA,0,AAA,36125

Вы можете использовать два {..} для нескольких проверок и действий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...