Я читал об этом множество тем, но ни одна из них мне еще не помогла.
Это образец моего текста:
[userId:@"1"
userName:@""
userPos:@[@"11006321C", ]
userDisp:@[@"4200012FD6", ]];
[userId:@"2"
userName:@""
userPos:@[@"412520084C",
@"7200851",
@"54720021",
]
userDisp:@[@"230035FD6",
@"3213456432C0035FD6",
@"1F200538D5",
]];
Я пытаюсь уловить это:
userPos:@[@"11006321C", ]
userDisp:@[@"4200012FD6", ]]
и
userPos:@[@"412520084C",
@"7200851",
@"54720021",
]
userDisp:@[@"230035FD6",
@"3213456432C0035FD6",
@"1F200538D5",
]]
(все совпадения из текста) с использованием регулярного выражения: userPos:@\[((?:.\r?\n?)*)\]
Попробуем это в bash, используя:
for string in $file # text has been read into this variable
do
[[ $word =~ $regex ]]
if [[ ${BASH_REMATCH[0]} ]]
then
string="${x:+x }${BASH_REMATCH[0]}"
userlist+=("$string")
echo "$string"
fi
done
Чтобы добавить их в список.
Но это не работает, так как регулярное выражение совпадает, отмечая вообще. Я знаю, что существуют различные виды движков Regex и тому подобное, и я пробовал так много разных регулярных выражений, чтобы это работало в bash, но, похоже, не могу заставить его работать.
Кто-нибудь, кто может помочь мне поймать то, что я хочу в bash?