繁体   English   中英

从一个文件复制内容并需要使用 sed 在另一个文件中替换

[英]Copy a content from one file and need to replace in another file using sed

在这里,我们有两个文件。 我们需要从文件 1 中复制一个密钥,并需要使用 sed 命令将文件 2 中的特定字符串替换为“key”。 我们尝试使用以下命令:

sed -e '3 /key/{r file1' -e 'd}' file2

sed  -n "3 s/key/$(cat file 1 |grep ^Key|cut -d ' ' -f2)/" file2

文件 1

ABCD
EFGH 
Key: qvUkD6QaFBA1jYEpynivMoQx+9V71F4+fdn1TIUKPBNny/3zCnjihd1mwxZg==

档案 2

IJKL
MNOP
secret key;
MNOP

预期结果:

IJKL
MNOP
secret qvUkD6QaFBA1jYEpynivMoQx+9V71F4+fdn1TIUKPBNny/3zCnjihd1mwxZg==;
MNOP

这可能对你有用(GNU sed):

sed -nE '/Key: /{s///;s/\W/\\&/g;s#.*#s/"key"/&/#p}' file1 | sed -Ef - file2

从 file1 制作一个替换命令,不要忘记引用非单词字符。

通过-f选项将 sed 替换命令作为stdin传递给第二次调用 sed 并使用它来编辑 file2。

awk

我不确定我的代码对您的使用效率如何。

awk ' /^Key/{q=$2;next} /A|E/{$0=""; next}/^secret/{$2="\""q"\";"}1' $file1 $file2
$ awk ' /^Key/{q=$2;next} /A|E/{$0=""; next}/^secret/{$2="\""q"\";"}1' $file1 $file2
IJKL
MNOP
secret "qvUkD6QaFBA1jYEpynivMoQx+9V71F4+fdn1TIUKPBNny/3zCnjihd1mwxZg==";
MNOP

在这里,我匹配以Keysecret字符串开头的任何行并替换它们的值。

sed

您需要先创建一个变量来获取key

key=$(sed '1,2d;s/Key: //' $file1)key=$(awk 'NR==3{print $2}' $file1)

$ echo $key
qvUkD6QaFBA1jYEpynivMoQx+9V71F4+fdn1TIUKPBNny/3zCnjihd1mwxZg==

以下代码将生成您的预期结果,但我再次不确定它对您的使用效率如何。

sed "/^secret/s|key|$key|" $file2
$ sed "/^secret/s|key|$key|" $file2
IJKL
MNOP
secret "qvUkD6QaFBA1jYEpynivMoQx+9V71F4+fdn1TIUKPBNny/3zCnjihd1mwxZg==";
MNOP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM