Найдите все происшествия строки в 4-м Столбце и замените 7-й столбец определенным текстом - удар

Я - новичок для избиения сценариев, и я не могу найти решение своей проблемы. У меня есть список строк как в файле input.txt, разделенном символом новой строки:

TATAMOTORS
TCS
RELIANCE
MARUTI

У меня есть другой файл target.txt больше чем с 1 000 строк в формате CSV, который имеет следующий формат:

124,1940000,792,TATAMOTORS,172.1.1.21,mode1,12:00:00,1,21,0,23,23,014,1000,alive,1,17,23

Я хочу заменить время в поле номер 7 к 24:00:00 для всех строк, где столбец 4 (здесь TATAMOTORS) соответствует любой из строк в файле input.txt.

Я могу сделать это с простой командой/сценарием удара?

0
задан 2 May 2019 в 12:39

2 ответа

Другой способ использования bash и sed:

while read token; do
   sed -i "/$token/{s/,[^,]*/,24:00:00/6}" target.txt
done < input.txt

Этот скрипт считывает input.txt построчно и помещает значение строки в переменную token.

sed выполняет замену 6-го совпадения регулярного выражения только для строки, содержащей $token.

Опция

-i указывает, что файлы должны редактироваться на месте.

0
ответ дан 2 May 2019 в 12:39

Вы можете сделать это с помощью простой команды / скрипта Awk:

awk -F, '
  BEGIN{OFS=FS} 
  NR==FNR {a[$1]++; next} 
  $4 in a {$7 = "24:00:00"}
  1
' input.txt target.txt
0
ответ дан 2 May 2019 в 12:39

Другие вопросы по тегам:

Похожие вопросы: