gpt4 book ai didi

regex - 如何在 awk 中使用带空格的 Sed

转载 作者:行者123 更新时间:2023-11-29 09:39:50 27 4
gpt4 key购买 nike

我的问题是:我有文件 1:

 3119
3359
1359
...

和文件2

 2222 abc
3359 def <---- this is a match
4444 ghi
...

我想通过在文件 2 中添加前缀字符串来修改文件 1 中的索引所在的每一行。结果将是:

 2222 abc
3359 PREFIXdef <---- this is a match
4444 ghi
...

我想到了这个解决方案:

sed `cat file1.txt | awk '{print "-e s/"$1"/"$1"PREFIX./"}'`<<<"`cat file2.txt`"

给出这个结果:

 2222 abc
3359PREFIX def <---- this is a match
4444 ghi
...

如何在 PREFIX 前添加一个空格并删除 PREFIX 后的空格?我有一个错误(命令未终止)

理想情况下,我会在“s/xx/xx”周围添加 2 个撇号:

sed `cat file1.txt | awk '{print "-e 's/"$1" /"$1" PREFIX./'"}'`<<<"`cat file2.txt`"

但我无法逃脱 ''!!!

最佳答案

这个 awk 命令可以处理这个问题,方法是将第一个文件的所有第一列放入关联数组,然后对照文件 2 进行检查:

awk 'FNR==NR{a[$1]; next} $1 in a{$2 = "PREFIX" $2} 1' file1 file2

2222 abc
3359 PREFIXdef
4444 ghi

关于regex - 如何在 awk 中使用带空格的 Sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36884432/

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