У меня есть файл csv, который я рассматриваю в bash, который я пытаюсь манипулировать. Есть несколько вещей, которые я/пытаюсь изменить. Структура, как так, где первая строка в столбец (поле) заголовкиИзмените имя поля и отредактируйте файл csv
cat,dog,hippopotamus,zebra
1,,3,2
three species, five species,only one,multiple
at,home, at, home, wild, wild
Как я могу редактировать поля (колонки) имена в формате CSV?
head -1 test.csv
показывает, что имена полей (столбцов), но она все еще имеет запятые в нем, как хорошо, и это не позволяет имени поля меняющегося на всех.
Другая часть этого вопроса заключается в том, что я хочу только редактировать заголовки длиной более 8 символов, и в этом случае я просто возьму первые 8 символов. Я предполагаю, что я использовал бы какой-то цикл, основанный на длине строки, но так как я не знаю, как даже редактировать имя поля только одного столбца, я не уверен, как это сделать. В приведенном выше сценарии изменение
hippopotamus
наhippopot
.Как заменить пустые ячейки в csv на
NA
илиNULL
?sed -i 's/ /NULL/g'
Мысль будет работать, но это не так.
Некоторые из ячеек содержат в себе запятые, испорченные разделителем
,
. Я использовал код ниже и, похоже, работает, но есть ли лучший/более безопасный способ сделать это?sed -i "s/, /_/g"
Или в подобной ситуации, если несколько столбцов содержат строки иногда с пробелами в пределах строки, но я только хочу, чтобы удалить пространство в одном из столбцов, оставляя другие столбцы в одиночку, как я могу добиться этого ?
sed -i 's/ //g' test.csv
Если имя поля содержит запятые, как определяется то, что принадлежит к какой области? поля не цитируются? В противном случае это не является должным образом «разделенным запятой». –
Все, что вы хотите сделать, абсолютно тривиально в awk и было разрешено тысячи раз на этом сайте, а другие - просто google. Сказав это, ваш введенный образец ввода не имеет смысла, см. Комментарий от @BenjaminW. –