Intereting Posts
Яркость на моем Lenovo SL510 составляет всего 100% и 0%? Не удалось добавить папку в PATH в файл .profile. x11 – не может перемещать курсор мыши с нуворишем, xev все еще сообщает движение Передача разобранного вывода sed для поиска (в этом направлении) Удалите функцию автоматического возврата Nautilus Обзор правил iptables для сервера почему grep ведет себя по-другому на моем домашнем ПК и офисном ПК получить общие файловые системы, работающие с virt-manager 1.3.2 в ubuntu 16.04 LTS Стирание ноутбука Linux Как я могу сделать тип прерывания вывода файла и кодировку для всех типов файлов? Помогите Конфиг websvn Ubuntu Почему выходные данные bash вместо выполнения, когда сценарий транслируется? Настройка разрешений SVN с помощью davsvnauthz Могут ли два USB-устройства RNDIS с тем же IP-соединением подключаться к серверам VNC одного компьютера? Есть ли способ предотвратить git от изменения прав доступа и прав собственности на pull?

Удалить последние символы перед разделителем

Содержание входного файла выглядит так:

header;header;header;header 2018/06/04;141000;bla;bla 

Желаемый результат:

 header;header;header;header 2018/06/04;1410;bla;bla 

У меня есть команда ниже с sed

 sed -i 's/.//16' $inputFile 

Но удаляет мой заголовок как:

 header;hder;header;header 2018/06/04;1410;bla;bla 

Чтобы избежать этого я пытался сделать:

 tail -n +2 | sed -i 's/.//16' $inputFile 

Но не работает. заранее спасибо

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

 awk -F ';' -v OFS=';' 'NR > 1 { sub("..$", "", $2) }; 1' <"$inputFile" 

Это изменило бы второе ; -ограниченное поле в каждой строке ввода, кроме первой, удалив из нее последние два символа.

Трейлинг 1 приводит к выводу каждой строки (ее можно заменить на { print } ).

Вы перенаправили бы вывод этого в новый файл, который позже вы могли бы заменить оригиналом.

Если перед вторым разделителем нужно удалить два символа (и, как и в вашем примере, предполагается, что перед каждым из первых двух разделителей всегда есть как минимум два символа), используйте:

 sed -i -- '1!s/..;/;/2' "$inputFile" 

1! избегает изменения заголовка (первой) строки.
Остальное удаляет два символа непосредственно перед разделителем ; ,