gpt4 book ai didi

linux - 使用 Linux shell 脚本用给定文本替换字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:41 28 4
gpt4 key购买 nike

我有一个名为 testfile 的文件。它包含一些信息,例如

methun:x:500:500:comment:/home/methun:bin/bash
salahuddin:x:501:500:comment:/home/methun:bin/bash

现在实现了以下shell程序:

 echo "Enter a Name:"
read username
users='cat /mypractice/myfiles/testfile | awk -F ':' '{print $1}''
for user in $users
do
if [ "$user" == "$username" ]; then
echo "Name found and Enter a new name to change."
read newUsername
#need code to change text on my file --->testfile
fi
done

现在假设我需要将 methun 更改为 Moin。评论新评论。我用过

sed -i 's/"$user"/"$newuser"/g' /mypractice/myfiles/testfile

但它在这里不起作用。我在我的测试文件中单独测试它,它会改变并替换所有。但我只需要改变我想要的那个位置。

我也试过用 usermod 但它在这里不起作用..

任何人都可以给我解决方案或更正我的代码...谢谢

最佳答案

您在 sed 命令中使用了 g 标志,这意味着全局替换(将更改所有出现的地方)。此外,虽然引用的变量包含在单引号内,因此不会进行插值。

试试这个:

sed -i "s/^$user/$newuser/" /mypractice/myfiles/testfile

我在替换部分放置了一个 ^ anchor ,这意味着只有当单词位于行首时才替换。如果用户名不在开头而是在中间某处,这可以防止您进行更改。

关于linux - 使用 Linux shell 脚本用给定文本替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22904207/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com