Как удалить последнюю запятую каждой строки csv с помощью linux

Мне нужно удалить последнюю запятую каждой строки.

У меня есть только один файл csv, который выглядит так:

98,N,N,N,N,S, 99,N,N,N,N,S, 101,Y,Y,Y,Y,S, 

У меня есть следующий скрипт, но он не работает:

 for fname in conv2015_10_LogicalComponent_CosProfile.csv do sed 's/.$//' $fname > tmp.tmp mv tmp.tmp $fname done 

6 Solutions collect form web for “Как удалить последнюю запятую каждой строки csv с помощью linux”

это должно сработать.

  for fname in conv2015_10_LogicalComponent_CosProfile.csv do cat $fname | sed 's/.$//' > tmp.tmp mv tmp.tmp $fname done 

Другим вариантом является использование опции «-i» для GNU Sed:

то вам нужно только сделать это:

 sed -i 's/.$//' filename 

Кроме того, чтобы выяснить, почему ». используется вместо «,». Это регулярное выражение, которое соответствует почти любому символу, поэтому, если есть «;» он также заменит это. Вы уточните, что вы можете изменить «. $» На «, $».

РЕДАКТИРОВАТЬ:

Я заметил, что вы упомянули, что у вас на самом деле есть пробелы в конце. Таким образом, этот код работает даже с пробелами. Проверено на Solaris.

 cat filename | sed 's/,[[:blank:]]*$//g > tmp.tmp mv tmp.tmp desired_filename 

Использование расширения параметра bash :

 while IFS= read -r line; do echo "${line%,}"; done <file.txt 

Использование sed :

 sed 's/,$//' file.txt 

Использование grep с помощью PCRE:

 grep -Po '.*(?=,$)' file.txt 

Он должен работать, если у вас нет пробелов в конце строки, особенно возврат каретки. Используйте cat -vet в файле, чтобы увидеть, где на самом деле находится конец строки (он отображается cat -vet $).

Вы можете упростить sed и mv в одну строку с опцией -i которая обновляет файл.

 sed -i 's/,$//' $fname 

Попробуй это

perl -pi -e 's/^(.*),(.+)$/$1/' conv2015_10_LogicalComponent_CosProfile.csv

(.*) будет соответствовать всем, пока последняя запятая и все последующие после этого (пробелы) не будут сопоставлены с (.+) и, наконец, заменят всю строку первым совпадением, которое хранится в $1 .

Я бы использовал vim или vi . Синтаксис такой же, как sed . Используйте «:» (двоеточие) для входа в командный режим и запустите %s/,$//g .

Поскольку это – разделенный файл, и вы хотите удалить последнее поле [empty], как насчет уменьшения количества полей в одном?

 $ awk 'BEGIN {FS=OFS=","} NF--' file 98,N,N,N,N,S 99,N,N,N,N,S 101,Y,Y,Y,Y,S 
  • Возврат только содержимого до и после номера строки с разными совпадающими словами
  • Как распространять значение переменной
  • Как я могу коснуться каждого файла в каталоге?
  • Знайте, какой процесс выполняет I / O без iotop
  • Искать файлы ТОЛЬКО в подкаталоге
  • Выполнение скриптов оболочки bash
  • Проблема при запуске скрипта
  • Замените строку в файле на другую, где оба сохраняются в переменных
  • Как написать скрипт для запуска, только если другой скрипт запущен совсем недавно?
  • Массовое переименование и изменение размера с помощью Imagemagick
  • Использовать сценарий ожидания из Vagrantfile для обеспечения - проблема с несуществующим файлом во время выполнения
  • Interesting Posts

    rpc.statd не запускается, но требуется для удаленной блокировки (statd unrecognized service)

    Разрешение дисплея FreeBSD под Veertu

    Сменить рабочее пространство между двумя мониторами на gnome

    Могу ли я запустить gedit при запуске со списком определенных файлов?

    Сообщите мне, когда завершено извлечение RAR-архива (с помощью unar через пользовательское действие Thunar)

    shell howto: сохранить несколько файлов двоичных данных (jpg) в один файл с некоторыми дополнительными данными и снова отделить

    ecryptfs смонтирован дважды – это вызовет проблемы?

    Как создать конкретный пакет из исходного пакета Debian?

    Как найти ядро ​​Linux, которое работает нормально на моем ПК?

    Вербальное считывание регулярных выражений sed в квадратных скобках, звездочка вне скобок

    Как использовать GNOME Keyring с Python Keyring в виртуальной среде?

    Поиск файлов, содержащих общие слова

    Как настроить vpn, чтобы он работал только на пользовательских URL в Linux

    Включить звук на удаленном компьютере под управлением Windows через xfreerdp

    Переход с Fedora Rawhide на Beta

    Linux и Unix - лучшая ОС в мире.