我的问题是:
我有 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/