如何根据另一个文件中的值替换文件中的字符串? (内例)

发布于 2024-10-21 11:25:34 字数 481 浏览 1 评论 0原文

如何根据另一个文件中的值替换文件中的字符串。

示例,2 个文件 - 输入、输出

输入:

12345 1

输出:

(1,'a lot of text', 'some other info',0,null, 12345),
(2,'a lot of text', 'some other info',0,null, 12345),
(3,'a lot of text', 'some other info',0,null, 12345),
(4,'a lot of text', 'some other info',0,null, 12345),
(5,'a lot of text', 'some other info',0,null, 12345);

需要完成的操作:

从文件“输入”中读取值,并在文件“输出”中将所有“12345”替换为“1”。 感谢您提前的帮助

how to replace strings in file, based on values from another file.

Example, 2 files - input, output

input:

12345 1

output:

(1,'a lot of text', 'some other info',0,null, 12345),
(2,'a lot of text', 'some other info',0,null, 12345),
(3,'a lot of text', 'some other info',0,null, 12345),
(4,'a lot of text', 'some other info',0,null, 12345),
(5,'a lot of text', 'some other info',0,null, 12345);

Needs to be done:

read values from file 'input', and replace all '12345' with '1' in file 'output'.
Thanks for help in advance

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

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

发布评论

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

评论(4

却一份温柔 2024-10-28 11:25:35

好的,我遇到了这个解决方案:

cat input | awk '{ cmd = "sed s/," $1 ",/," $2 ",/g" " output > output.new"; print system(cmd) }'

ok, I came across this solution:

cat input | awk '{ cmd = "sed s/," $1 ",/," $2 ",/g" " output > output.new"; print system(cmd) }'
筱武穆 2024-10-28 11:25:34

怎么样:

sed `sed 's|\(.*\) \(.*\)|s/\1/\2/|' input` output

How about:

sed `sed 's|\(.*\) \(.*\)|s/\1/\2/|' input` output
苄①跕圉湢 2024-10-28 11:25:34

无需让 AWK 重复调用 sed。只需让 AWK 将第一个文件读入数组即可:

awk -F "[ )]" 'NR == FNR {a[$1] = $2; next} {sub($(NF-1), a[$(NF-1)]); print}' key-value-file main-file

No need to have AWK repeatedly call sed. Just have AWK read the first file into an array:

awk -F "[ )]" 'NR == FNR {a[$1] = $2; next} {sub($(NF-1), a[$(NF-1)]); print}' key-value-file main-file
无可置疑 2024-10-28 11:25:34
cat input | while read src rep
do
  sed -i "s, $src), $rep),g" output
done

请记住备份“输出”。

编辑:另请注意,如果“输入”包含 sed 的特殊字符,则会失败。对于简单的字母/数字,它可以正常工作。

cat input | while read src rep
do
  sed -i "s, $src), $rep),g" output
done

Remember to make a backup of "output".

EDIT: Also note that if "input" contains characters that are special to sed, this will fail. For plain letters/digits it'll work fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文