Изменить символы в нижний регистр

Я пытаюсь сделать все значения в 11-м столбце моего файла .csv строчными. Я знаю, что могу использовать 'tr A-Z a-z', но как мне убедиться, что он работает в нужном мне файле и только в 11-м столбце.

1
задан 19 September 2019 в 05:30

1 ответ

Это зависит, что Вы подразумеваете ".csv под файлом"

В общем случае (где заключенные в кавычки поля CSV могут содержать встроенные символы разделителя, как "foo,bar",baz) необходимо будет использовать инструмент, который может правильно проанализировать это, такое как один из Perl / Python / модули Ruby - или Miller.

Напр. данный:

$ cat file.csv
ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,ELEVEN,TWELVE

затем

$ mlr --csv --implicit-csv-header --headerless-csv-output put '$11 = tolower($11)' file.csv
ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,eleven,TWELVE

Поскольку простая запятая разграничила поля, Вы могли использовать Awk или даже Sed:

$ awk -F, 'BEGIN{OFS=FS} {$11 = tolower($11)} {print}' file.csv
ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,eleven,TWELVE

$ sed -E 's/([^,]+)/\L\1/11' file.csv
ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,eleven,TWELVE
1
ответ дан 7 December 2019 в 14:58

Другие вопросы по тегам:

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