awk, вырезать символы из подстроки

У меня есть следующие csv. Я пытаюсь удалить 20 из 2017, поэтому он отформатирован как 3717 или 31817. Позиции всегда разные, поскольку некоторые даты имеют однозначные дни. Поскольку год всегда 4 цифры, как я могу удалить 20 из второго столбца, идущего справа налево?

 12 32 20 17 EODTRANSACTION J 87.75   
 12 323 20 17 EODTRANSACTION J 155  
 45 330 20 17 EODTRANSACTION J 270 

Ожидаемый результат

 12 3217 EODTRANSACTION J 87.75   
 12 32317 EODTRANSACTION J 155  
 45 33017 EODTRANSACTION J 270

2 Solutions collect form web for “awk, вырезать символы из подстроки”

awk- подход:

 awk '{match($2, /^([0-9]+)[0-9]{2}([0-9]{2})$/, a); $2=a[1]a[2]}1' file 

Выход:

 12 3217 EODTRANSACTION J 87.75 12 32317 EODTRANSACTION J 155 45 33017 EODTRANSACTION J 270 

match($2, /^([0-9]+)[0-9]{2}([0-9]{2})$/, a) – захватит все цифры из второго поля, кроме 3- го и 4- я цифра в конце

Замените второе поле на результат: заменив первый «20» во втором поле пустой строкой, затем напечатайте полученную строку:

 awk '{$2=gensub("20", "", 1, $2); print;}' input > output 
  • Захват вывода curl после строки в файл
  • эффект * в регулярном выражении
  • Полоса прокрутки пробелов из файлов
  • Что означает <<<?
  • Уменьшение числа с помощью sed
  • Поиск второй строки файлов и имена файлов для печати в stdout
  • Замените строки в файле на основе списка строк и списка соответствующих замещений
  • Выровнять шестнадцатеричный текстовый файл по 9 байт каждой строки
  • От файла gpx до csv
  • Удалите частичные дубликаты последовательных строк, но сохраните первый и последний
  • Каков наилучший способ найти список нескольких строк в большом текстовом файле
  • Полосы пробелов после одиночных заглавных букв с sed
  • Linux и Unix - лучшая ОС в мире.