Как найти и заменить в одном поле на основе значения в другом поле?

У меня такой файл.

IMS00|20140101|Unix|Jan14 IMS01|20140201|Unix|Feb14 IMS02|20140301|Unix|Mar14 IMS03|20140101|Unix|Jan14 IMS04|20140201|Unix|Feb14 

Мои критерии: если значение столбца 1 – IMS00 , то значение столбца 4 Jan14 должно быть заменено на Jan15 если значение столбца 1 – IMS01 , тогда значение столбца 4 Feb14 должно быть заменено на Feb15 .

Как это может быть сделано?

Ваш вопрос не очень ясен, например, в коде, который вы пишете IMS00 а позже ссылаетесь на него как на IMS.00 с точкой. Также количество измененных столбцов должно быть, вероятно, 4 , а не 3 . В любом случае, вы, вероятно, ищете

 awk 'BEGIN{FS=OFS="|"}$1=="IMS00"{$4="Jan15"}$1=="IMS01"{$4="Feb15"}1' file 

Блок BEGIN выполняется только один раз в самом начале и устанавливает оба разделителя поля FS и разделителя полей вывода OFS на | , Финал 1 – это просто печать всего.

Вы можете сделать это в Perl:

 perl -pe 's/^(IMS00\|.*\|).*/$1Jan15/; s/^(IMS01\|.*\|).*/$1Feb15/;' file 

Вот решение Python:

 #!/usr/bin/env python2 with open('file.txt') as f: for line in f: if line.startswith('IMS00'): print line.replace('Jan14', 'Jan15') elif line.startswith('IMS01'): print line.replace('Feb14', 'Feb15') 

Этот скрипт будет читать каждую строку из файла, а затем проверяет, начинается ли строка с заданной строки, если тогда желаемая часть строки будет заменена заменяющей строкой.