Вы были почти там.
Так как я не знаю, сколько запятых есть в первой строке, но если это только название компании и номер компании, эта команда, вероятно, самая короткая, которую вы можете получить.если вы будете использовать bash:
Самый простой способ избавиться от нежелательных символов - это использовать xargs после запуска xargs -L1, все выглядит лучше:
xargs -L1
Вывод:
CompanyName, CompanyNumber,RegAddress.CareOf,...
! # 1 AVAILABLE LOCKSMITH LTD,05905727,,...
!NSPIRED LIMITED,06019953,...
CENTRE FOR COUNSELLING, PSYCHOTHERAPY AND TRAINING LTD,07981734,...
Теперь мы можем добавить срез -f1,2,3, который вы пробовали, я думаю
xargs -L1 | cut -d, -f1,2,3
Вывод:
CompanyName, CompanyNumber,RegAddress.CareOf
! # 1 AVAILABLE LOCKSMITH LTD,05905727,
!NSPIRED LIMITED,06019953,...
CENTRE FOR COUNSELLING, PSYCHOTHERAPY AND TRAINING LTD,07981734
Хорошо, теперь я столкнулся с той же проблемой, что и в вашем примере, мы также получили число за LTD, так как мы добавили nr 3 для сокращения, нонежелательные символы в конце все еще существуют:
Решение, прочитайте файл с помощью sed и направьте его с помощью xargs -L1!
sed 's/,...$//;s/,$//;s/, / /g' big_file.csv
Давайте разберем его:
sed 's/,...$//;s/,$//;s/, / /g' big_file.csv|xargs -L1|cut -d, -f1,2
Конечный результат:
CompanyName CompanyNumber,RegAddress.CareOf
! # 1 AVAILABLE LOCKSMITH LTD,05905727
!NSPIRED LIMITED,06019953
CENTRE FOR COUNSELLING PSYCHOTHERAPY AND TRAINING LTD,07981734
Редактировать
Поскольку я забыл запятую перед редактированием, я нашел лучшее решение:
sed 's/,\ / /g' big_file.csv|xargs -L1|cut -d, -f1,2