更改bash属性文件中密码的所有出现

发布于 2025-02-08 20:31:50 字数 1773 浏览 0 评论 0原文

我想在文件中更改所有密码(要加密),并使用一个命令,并且我坚持使用SED,我不知道该如何告诉它以

我的propeties中的示例 输出。文件就是这样:

someCompanie:
    username: testUsername
    password: testPassword <--- password i want to be encrypted
someOtherCompanie:
    username: testOtherUsername
    password: testOtherPassword <--- password i want to be encrypted

结果就是这样:

someCompanie:
    username: testUsername
    password: a2e48043fcc30e2982ed43fbab01824f1efdaf8eddcc1ac914d1815d7a8738c4 <--- password encrypted
someOtherCompanie:
    username: testOtherUsername
    password: e7c3161f3655662da261015669c3ca449b4c4a738053088b363e83ba93ebdb8f <--- password encrypted

这是我得到的:

grep "password" application.yml | cut -d ":" -f2 | xargs -I pass sed -ie 's,'"$(pass)"',test,g' "app2"

这是我的输出:

sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression

非常感谢您的关注,

Florian

I would like to change all password (to be encrypted) in a file, with a command and i'm stuck with my sed, i don't know how i can tell it to take the output of the sed

the example in my propeties file is like this:

someCompanie:
    username: testUsername
    password: testPassword <--- password i want to be encrypted
someOtherCompanie:
    username: testOtherUsername
    password: testOtherPassword <--- password i want to be encrypted

the result wanted is like this:

someCompanie:
    username: testUsername
    password: a2e48043fcc30e2982ed43fbab01824f1efdaf8eddcc1ac914d1815d7a8738c4 <--- password encrypted
someOtherCompanie:
    username: testOtherUsername
    password: e7c3161f3655662da261015669c3ca449b4c4a738053088b363e83ba93ebdb8f <--- password encrypted

Here's what i got:

grep "password" application.yml | cut -d ":" -f2 | xargs -I pass sed -ie 's,'"$(pass)"',test,g' "app2"

and here's my output:

sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression
sed: -e expression #1, char 0: no previous regular expression

Thanks very much for your attention,

Florian

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝梦月影 2025-02-15 20:31:50
$ cat tst.sh
#!/usr/bin/env bash

encrypt() {
    printf '%s' "$1" | md5sum | cut -d' ' -f1
}

while IFS= read -r line; do
    if [[ "$line" =~ ^([[:space:]]*password:[[:space:]]*)(.*) ]]; then
        line="${BASH_REMATCH[1]}$(encrypt "${BASH_REMATCH[2]}")"
    fi
    printf '%s\n' "$line"
done < "${@:--}"

$ ./tst.sh file
someCompanie:
    username: testUsername
    password: fed3b61b26081849378080b34e693d2e
someOtherCompanie:
    username: testOtherUsername
    password: 7c0453eb71acb77f386b2798767dc97a

Encrypt()的内容替换了您要使用的任何加密工具的调用,但要调用它。

$ cat tst.sh
#!/usr/bin/env bash

encrypt() {
    printf '%s' "$1" | md5sum | cut -d' ' -f1
}

while IFS= read -r line; do
    if [[ "$line" =~ ^([[:space:]]*password:[[:space:]]*)(.*) ]]; then
        line="${BASH_REMATCH[1]}$(encrypt "${BASH_REMATCH[2]}")"
    fi
    printf '%s\n' "$line"
done < "${@:--}"

$ ./tst.sh file
someCompanie:
    username: testUsername
    password: fed3b61b26081849378080b34e693d2e
someOtherCompanie:
    username: testOtherUsername
    password: 7c0453eb71acb77f386b2798767dc97a

Replace the contents of encrypt() with a call to whatever encryption tool you want to use, called however you want to call it.

咋地 2025-02-15 20:31:50

使用sed,仅匹配以密码开头的行进行替换。

-i.bak将在保存原始文件时创建文件的备份

$ sed -i.bak '/^password/s/ .*/ newPassword/' input_file
username: testUsername
password: newPassword

Using sed, match only lines that begin with password to carry out the substitution on.

-i.bak will create a backup of the file while saving the original file in place

$ sed -i.bak '/^password/s/ .*/ newPassword/' input_file
username: testUsername
password: newPassword
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文