У меня есть кома разделителей файла, где некоторые значения могут отсутствовать какусловно заменить несколько значений в нескольких столбцах
1,f,12,f,t,18
2,t,17,t, ,17
3,t,15, ,f,16
Я хочу изменить некоторые столбцы в числовой; е 0 и т к 1. Здесь, я хочу изменить только столбцы 2 и 5, и не хочу, чтобы изменить столбец 4. Я мой результат файл должен выглядеть
1,0,12,f,1,18
2,1,17,t, ,17
3,1,15, ,0,16
я могу использовать оператор
awk -F, -v OFS=',' '{ if ($2 ~ /t/) { $2 = 1 } else if ($2 ~ /f/) { $2 = 0 }; print}' test.csv
чтобы изменить отдельные столбцы
Я могу также использовать цикл как
awk -F, -v OFS=',' 'BEGIN {
IFS = OFS = ","
}
{
for (column = 1; column <= 4; ++column) {
if ($column ~ /t/) {
$column = 1
}
else if($column ~ /f/) {
$column = 0
}
}
print
}
' test.csv
заменить несколько Колум если они вместе. Как изменить цикл for, чтобы указать только конкретные столбцы? Я знаю, что для каждого цикла есть одно и то же, но я не мог заставить его работать. Кроме того, как я могу назначить несколько переменных в массиве в одном операторе, как
a =[1, 2, 3, 4]
Просто дополнительный запрос, как можно игнорировать первую строку с этой командой. – discipulus
Да, конечно: 'awk 'BEGIN {FS = OFS =", "; а [2]; a [5]} NR> 1 {для (i в a), если ($ i == "f") $ i = 0; else if ($ i == "t") $ i = 1} 1 'file' – anubhava