Используя bash скрипт, нужно получить желаемый результат - PullRequest
0 голосов
/ 13 июля 2020

У меня есть файл, содержащий 4000 строк, некоторые из которых показаны ниже:

Sdppointer_u7
Sdppointer_gh6
Wsd_rt5
Wsd_p8

Где все строки будут Sdppointer_*, Wsd_*. Он должен напечатать вывод, как показано ниже, когда файл встречает строку со строкой Sdppointer_*, Wsd_*. В приведенном ниже коде t2 - это файл.

#!/bin/bash
str1="SdpMaster*"
str2="Wsd*"
content=$(cat t2)
if [ "$str1" == "$content" ];then 
    echo "User A hitlist  " "$str1" "-rev" "B.9"
elif [ "$str2" == "$content" ];then
    echo "User A hitlist  " "$str2" "-rev" "A.7"
else
    echo "Not found"
fi

В моем приведенном выше коде я могу заставить str1, str2 принимать все строки, такие как Sdppointer_*, Wsd_*

Желаемый результат:

User A hitlist Sdppointer_u7 -rev B.9
User A hitlist Sdppointer_gh6 -rev B.9
User A hitlist Wsd_rt5 -rev A.7
User A hitlist Wsd_p8 -rev A.7

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Мне нравятся операторы case для такого рода вещей.

while read line
do case "$line" in
   SdpMaster*) echo "User A hitlist  " "SdpMaster*" "-rev" "B.9" ;;
         Wsd*) echo "User A hitlist  " "Wsd*"       "-rev" "A.7" ;;
            *) echo "Not found '$line'"                          ;;
   esac
done < tst

Я добавил строку (3), которая соответствует SdpMaster -

$: cat tst
Sdppointer_u7
Sdppointer_gh6
SdpMaster_ab1
Wsd_rt5
Wsd_p8

Output -

Not found 'Sdppointer_u7'
Not found 'Sdppointer_gh6'
User A hitlist   SdpMaster* -rev B.9
User A hitlist   Wsd* -rev A.7
User A hitlist   Wsd* -rev A.7

Вы все еще можете использовать vars, если хотите.

0 голосов
/ 13 июля 2020

Применить некоторое время l oop к go по всем строкам.

bash-3.2$ cat sample
Sdppointer_u7
Sdppointer_gh6
Wsd_rt5
Wsd_p8

bash-3.2$ 
bash-3.2$ SUB_A='Sdppointer'
bash-3.2$ SUB_B='Wsd'
bash-3.2$ while read lines
> do
> if [[ "$lines" == "$SUB_A"* ]]; then
>   echo "User A hitlist $lines -rev B.9"
> 
> elif [[ "$lines" == "$SUB_B"* ]]; then
>   echo "User A hitlist $lines -rev A.7"
> fi
> done < sample
User A hitlist Sdppointer_u7 -rev B.9
User A hitlist Sdppointer_gh6 -rev B.9
User A hitlist Wsd_rt5 -rev A.7
User A hitlist Wsd_p8 -rev A.7
bash-3.2$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...