Bash скрипт для изменения строк в переменных - PullRequest
0 голосов
/ 16 октября 2018

У меня есть две переменные в bash:

в первой переменной, разделитель поля ((,) во второй переменной, разделитель поля также (,)

в первойПеременная с именем VAR1 У меня есть:

Maria Debbie Annie,Chewbakka Zero,Yoda One,Vader 001

во второй переменной с именем VAR2:

"number":"11112",Maria Debbie Annie
"number":"11113",Maria Debbie Annie Lisa
"number":"33464",Chewbakka Zero
"number":"22465",Chewbakka Zero Two
"number":"34534",Christine Ashley
"number":"45233",Yoda One
"number":"45233",Yoda One One
"number":"38472",Susanne Ann
"number":"99999",Vader 001
"number":"99991",Vader 001 001
"number":"99992",Vader 001 002

Требуемый вывод в переменной VAR3:

"number":"11112","number":"33464","number":"45233","number":"99999"

Итакв основном мне нужно изменить имена в выводе с какого-то имени на "number":"somenumber" в том же порядке, что и в первой переменной.Также важно, что есть очень похожие строки, поэтому Yoda One != Yoda One One также Chewbakka Zero не равен Chewbakka Zero Two.

VAR2 содержит гораздо больше строк, чем указано в списке, я просто хотел показать, что сценарий долженнайти точные совпадения между VAR1 и VAR2.Спасибо вам за помощь.

1 Ответ

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

Проверьте это ..

> echo "$VAR1"
Maria Debbie Annie,Chewbakka Zero,Yoda One,Vader 001
> echo "$VAR2"
"number":"11112",Maria Debbie Annie
"number":"11113",Maria Debbie Annie Lisa
"number":"33464",Chewbakka Zero
"number":"22465",Chewbakka Zero Two
"number":"34534",Christine Ashley
"number":"45233",Yoda One
"number":"45233",Yoda One One
"number":"38472",Susanne Ann
"number":"99999",Vader 001
"number":"99991",Vader 001 001
"number":"99992",Vader 001 002
> export VAR1A=$(echo $VAR1| sed 's/,/$\|/g' | sed 's/$/\$/g')
> echo "$VAR1A"
Maria Debbie Annie$|Chewbakka Zero$|Yoda One$|Vader 001$
> echo "$VAR2"  | egrep "$VAR1A" | awk -F"," ' { printf("%s,",$1)} END { printf("\n") } ' | sed 's/.$//g'
"number":"11112","number":"33464","number":"45233","number":"99999"
>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...