Как найти и заменить строку с определенным набором условий в bash - PullRequest
0 голосов
/ 25 октября 2018

У меня есть папка, которая содержит другой набор папок, каждая из которых содержит файл .csv, в который необходимо внести изменения.

Я хочу найти определенную строку и заменить ее

Пример моего CSV-файла:

XX, 1,2,3,4, AA, BB, 5,6 ...

ГГ, 5,6,7,5,CC, DD, 9,10 ...

Я хочу заменить AA (6-е место) на "aa, bb, cc" ТОЛЬКО для тех строк, первое слово которых XX, Я хочу заменить CC (6-е местоесли бы я использовал разделитель, как и в предыдущей строке) с "cc, dd, ee" ТОЛЬКО для тех строк, первое слово которых YY

Как выполнить рекурсивный поиск по всем папкам и найти эти строкитолько в файле .csv и внесите эти изменения.

#!/bin/bash
file=test1.txt
IFS=$','
for i in `cat $file`
do
  echo "the name of the file I am going to is"
  echo "$i"
#add logic to look for "line beginning with XX and replace the 6th word in that line      
sed -e 's/^XX.\{0\}/replacedAB/' $i
done

test1.txt содержит путь к файлу .csv.

Я использую / bin / bash и моя версия 4.1.2 (1)

Можно ли использовать команду sed или read для замены строки в строке, начинающейся с XX?

1 Ответ

0 голосов
/ 25 октября 2018

Я предлагаю вам сначала использовать grep для построения выражения «обнаружение».Если вы выводите на экран или указываете --color=always, вы можете увидеть соответствующее выражение, подсвеченное в выводе.

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

Вот как.

...