Я пытаюсь выяснить, как искать и заменять пароль на определенной строке и конкретном столбце в TXT-файле. Это то, что он выглядит следующим образом:Bash: поиск и замена пароля в TXT-файле
Admin1 Pass1 1
Admin2 Pass2 1
User1 Upass1 0
User2 Upass2 0
И вот мой код:
while (true)
do
read -p 'Whose password would you like to change? Enter the corresponding user name.' readUser
userCheck=$(grep $readUser users.txt)
if [ "$userCheck" ]
then
echo $userCheck > temp2.txt
read -p 'Enter the old password' oldPass
passCheck=$(awk '{print$2}' temp2.txt)
if [ "$passCheck" == "$oldPass" ]
then
read -p 'Enter the new password' newPass
sed -i "/^$readUser/ s/$oldPass/$newPass/" users.txt
break
else
echo 'The username and/or password do not match. Please try again.'
fi
else
echo 'The username and/or password do not match. Please try again.'
fi
done
Предполагая, что пароль пользователя User1 заменяется с ТЕСТИРОВАНИЯ, это результат:
Admin1 Pass1 1 Admin2 Pass2 1 User1 TESTING 0 User2 Upass2 0
Что мне нужно:
Admin1 Pass1 1
Admin2 Pass2 1
User1 TESTING 0
User2 Upass2 0
Это связано с отсутствием цитаты. Однако вы можете просто заменить свои последние 2 строки на: 'sed -i 's/$ oldPass/$ newPass/g" users.txt'. Флаг '-i' для sed означает место на месте и будет непосредственно сохранять изменения в файле. – Aserre