use*_*869 2 bash shell awk sed
我的问题是:我有file1:
3119
3359
1359
...
Run Code Online (Sandbox Code Playgroud)
和file2
2222 abc
3359 def <---- this is a match
4444 ghi
...
Run Code Online (Sandbox Code Playgroud)
我想通过在字符串前面添加修改文件2中找到文件1的索引的每一行.结果将是:
2222 abc
3359 PREFIXdef <---- this is a match
4444 ghi
...
Run Code Online (Sandbox Code Playgroud)
我想出了这个解决方案:
sed `cat file1.txt | awk '{print "-e s/"$1"/"$1"PREFIX./"}'`<<<"`cat file2.txt`"
Run Code Online (Sandbox Code Playgroud)
给出了这个结果:
2222 abc
3359PREFIX def <---- this is a match
4444 ghi
...
Run Code Online (Sandbox Code Playgroud)
如何在PREFIX之前添加空格并删除之后的空格?我有一个错误(命令未终止)
理想情况下,我会在's/xx/xx'周围添加2个撇号:
sed `cat file1.txt | awk '{print "-e 's/"$1" /"$1" PREFIX./'"}'`<<<"`cat file2.txt`"
Run Code Online (Sandbox Code Playgroud)
但我无法逃脱''!!!
这个awk命令可以通过将第一个文件中的所有第1列到达关联数组然后针对file2进行检查来处理它:
awk 'FNR==NR{a[$1]; next} $1 in a{$2 = "PREFIX" $2} 1' file1 file2
2222 abc
3359 PREFIXdef
4444 ghi
Run Code Online (Sandbox Code Playgroud)