[英]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
在这里,我匹配以Key
和secret
字符串开头的任何行并替换它们的值。
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.