У меня есть данные, которые должны быть 30 столбцов в каждой строке. Экспорт не полностью выполнен, и я иногда получаю 32-50 столбцов, потому что в самих полях есть дополнительные разделители табуляции.
Мне также нужно удалить запятые из моих тысяч с помощью следующей программы sed.
sed '/[0-9],[0-9]./ {s/,//g; }' $oldfile > $newfile
Итак, как мне преобразовать следующие данные, исключив запятые и добавив дополнительный разделитель в последний столбец
вот мой пример ввода:
Column1 Column2 Column3
James 1,203.33 comment1
Mike -3,434.09 testing testing 123
Sarah 1,343,342.23 there here
Я бы хотел, чтобы результат был:
Column 1 Column2 Column3
James 1203.33 comment1
Mike -3434.09 testing_tab_testing_tab_123
Sarah 1343342.23 there_tab_here
Так что в конце мне нужно удалить запятые, когда они появляются в числе
Я также хочу найти строки с более чем 3 (или соответствующим количеством вкладок), а затем
замените вкладки после трех на tab , чтобы я мог обращаться с ними после загрузки их в свою базу данных, и все будет в 3 столбцах.
Я надеялся, что смогу сделать это в sed
(в котором я новичок) или в awk (я вообще не знаю awk
), потому что sed
действительно быстро обрабатывает все это.
Редактировать: Это то, что в итоге получилось лучше всего для моей ситуации
sed '/[0-9],[0-9]./ {s/,//g; };s/\t/_tab_/3g' input_file
сначала он удаляет все запятые между двумя числами. Затем он заменяет мои вкладки на « tab » после третьего вхождения. Я проверю это на работе.
Моя причина, по которой я не использую perl, заключается в том, что мои ограниченные знания об этом заставляют меня полагать, что для оценки потребуется загрузить документ в память, и эти документы имеют размер от 5 до 30 ГБ, что обычно превышает объем памяти моего компьютера.
Я дам вам знать, если что-то пойдет не так, когда я использую это на работе, но я действительно ценю всю помощь.