Использование sed для удаления разделителей цифр, заключенных в кавычки и кавычки из CSV?

Как я могу использовать sed для удаления из последнего столбца цифры запятой цифры цифры и цитаты?

Обратите внимание, что в приведенном ниже примере целевой столбец не содержится в двойных кавычках.

0,1,,,"10,815,197", 6,7,010202,,"5,589", 6,7,010202,,589, 

Результатом исследования будет:

 0,1,,,10815197, 6,7,010202,,5589, 6,7,010202,,589, 

3 Solutions collect form web for “Использование sed для удаления разделителей цифр, заключенных в кавычки и кавычки из CSV?”

Awk будет лучшим для вашего сценария.

 $ awk -F'"' '{gsub(",", "", $2);print}' file.txt 0,1,,, 10815197 , 6,7,010202,, 5589 , 6,7,010202,,589, 

Как это работает

-F'"' – заставляет AWK использовать двойные кавычки (") в качестве разделителя записей.

gsub(",","",$2) – Функция gsub будет искать и заменять все вхождения двойных кавычек пустой строкой.

print – печатает измененный контент на выходе.

Я думаю, что с awk проще. Вы можете попробовать что-то вроде этого:

 $ awk -vv='"' 'BEGIN{FS=OFS=v}{gsub(",","",$2);gsub("\"","",$0);print }' file.txt 0,1,,,10815197, 6,7,010202,,5589, 6,7,010202,,589, 
  • В основном вы говорите awk которые используют регулярное выражение -vv='"' чтобы использовать его как разделитель полей.
  • С FS=OFS=v вы говорите, что разделитель полей такой же, как разделитель выходного поля, который является " .
  • gsub (",","",$2) заменяют ничто во втором поле $2 (с разделителем в начале и в конце с " ).
  • gsub("\"","",$0) берет всю строку и заменяет " ничем перед распечаткой строки.

sed не подходит для этого.

 $ perl -pe 's|"([\d,]+)"(?=[^"]*$)|$1=~y/,//dr|eg' file 0,1,,,10815197, 6,7,010202,,5589, 6,7,010202,,589, 

Через Python.

 #!/usr/bin/python3 import sys import re file = sys.argv[1] with open(file, 'r') as f: for line in f: print(re.sub(r'"([\d,]+)"(?=[^"]*$)', lambda m: m.group(1).replace(',', ''), line), end = "") 

Сохраните приведенный выше сценарий в файле, скажем, script.py и запустите, затем запустите sript, выполнив команду ниже на терминале.

 $ python3 script.py inputfile 
  • как извлечь некоторые строки в файл данных по сравнению с другим файлом данных? (слияние)
  • Я хочу найти дубликаты в файле и добавить символ в конец строки в первом совпадении
  • Создание и экспорт / импорт переменной с awk?
  • извлечение из строки в строку, а затем сохранение в отдельный файл
  • SED или AWK: добавьте символ в каждую строку после найденного шаблона
  • sed backreference: получить каждую строку и добавить ее к концу строки
  • sed count lines между шаблоном - несколько файлов
  • Как сортировать и присоединяться в соответствии с номером / счетчиком внутри файла?
  • Назначения значений двойной кавычки, хранящиеся в CSV?
  • Заменить маркер в текстовом файле произвольным новым текстом
  • Измените определенную часть файла с помощью сценария оболочки
  • Linux и Unix - лучшая ОС в мире.