我的问题是:
我有 file1 :

 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 之前添加一个空格并删除之后的一个?我有一个错误
(命令未终止)

理想情况下,我会在 's/xx/xx' 周围添加 2 个撇号:
sed `cat file1.txt | awk '{print "-e 's/"$1" /"$1" PREFIX./'"}'`<<<"`cat file2.txt`"

但我无法逃脱'' !!!

最佳答案

这个 awk 命令可以通过将第一个文件中的所有第一列访问到关联数组中,然后根据 file2 进行检查来处理:

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/

10-13 07:16