Bash Читать строку за строкой и заменять строку рекурсивной - PullRequest
0 голосов
/ 25 марта 2020

У меня есть один файл с несколькими строками. Вот пример

etc / list.txt

MLA1234,MLA2345
MLA1235,MLA2345

Мне нужно найти рекурсивный поиск в папке для этой строки и заменить. Пример

etc / json / other / file2. json

{id:"MLA1234" , product_name:"blablabla"

Ожидаемый аванпост с заменой строки MLA1234

etc / json / other / file2. json (окончательный вариант)

{id:"MLA2345" , product_name:"blablabla"

Я делаю что-то подобное, но нет совпадений

#!/bin/bash

csvfile='list.txt'

# Make sure the file exists
if [ ! -f $csvfile ]
then
    echo "ERROR: file $csvfile does not exist."
    exit 1
fi

# Read the input file line per line
while read line
do

 # Capture the information out of the line, fields separated by ;
    IFS=',' read old new <<< $line



grep -rl $old . | xargs sed -i "s/$oldstring/$new/g"


1 Ответ

0 голосов
/ 25 марта 2020

Это работает для меня! я исправляю код!

#!/bin/bash

csvfile='list.txt'

# Make sure the file exists
if [ ! -f $csvfile ]
then
    echo "ERROR: file $csvfile does not exist."
    exit 1
fi

# Read the input file line per line
sed '1d' $csvfile | while read line
do
    # Capture the information out of the line, fields separated by ;
    IFS=',' read new old  <<< $line


grep -rl "$old" . | xargs sed -i "s/$old/$new/g"


done```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...