Прежде всего, вам следует использовать правильный анализатор CSV. Например, в Perl вы можете использовать Text :: CSV
:
Install cpanm
(если вы используете Perl, вы поблагодарите меня позже)
$ sudo apt -get install cpanminus
Если вы не используете систему на основе Debian, вы сможете установить ее с помощью диспетчера пакетов вашего дистрибутива.
Установите модуль Text :: CSV
$ sudo cpanm Text :: CSV
Разберите ваш файл
$ perl -MText :: CSV -le '
$ csv = Text :: CSV-> новый ({двоичный => 1});
while ($ row = $ csv-> getline (STDIN)) {
print "1: $ row -> [0], 2: $ row -> [1], 3: $ row -> [2], 4: $ row -> [3]"} '
Как вы можете видеть выше, первое поле - это $ row -> [0]
, второе $ row -> [1]
и т. Д.
Это был правильный путь. Более простой, но грязный прием - заменить любые кавычки запятыми другим символом. Затем обычно используйте awk
и, наконец, снова замените их запятыми. Я использую здесь ###
, но вы можете использовать все, что, как вы уверены, никогда не будет в одном из ваших полей.
$ sed -r 's/("[^",]+),([^",]+")/\1###\2/g' file.csv |
awk -F, '{print $1,$3}' | sed 's/###/,/g'
"prabhat,kumar" 2000
Нет, это невозможно; В Баше нет такой функции. Что еще более важно, эта идея глубоко ошибочна.
От кого ты скрываешь свою историю?
Злоумышленник должен иметь доступ к вашему домашнему каталогу и может читать ваши «точечные» файлы конфигурации и другие материалы.Почему бы вам просто не использовать разрешения, чтобы держать их подальше?
Является ли злоумышленник администратором, не защищенным разрешениями? (Либо имеет root, либо неограниченный доступ к системным резервным копиям, содержащим ваш домашний каталог и т. д. )В таком случае, зачем особенно беспокоиться о вашей истории Bash? У вас нет конфиденциальности в этой системе. Злоумышленник может шпионить за памятью в ваших запущенных процессах.
Ваш компьютер защищен локально (и доступен только вам ), но ваш домашний каталог смонтирован в сетевой файловой системе? В таком случае, почему бы вам не использовать уровень зашифрованной файловой системы поверх этого сетевого монтирования, чтобы все ваши файлы были защищены вместе, а не только ваша история Bash.
Как вы можете видеть, вряд ли существует какой-либо вариант использования подхода «ударить -крота» -к безопасности файлов (, предоставляя каждому отдельному приложению возможность защищать определенные файлы ).