我的问题是: 我有file1:
foreach ($listLanguages as $language) {
$packLanguage = new Packs2lng();
$packLanguage->setLanguage($language);
$packLanguage->setPack($pack);
$packLanguage->setPack2lngWording($request->request->get('pack_2lng_wording')[$language->getCode()]);
$packLanguage->setPack2lngDescription($request->request->get('pack_2lng_description')[$language->getCode()]);
}
和file2
3119
3359
1359
...
我想通过在字符串前加上修改文件2中找到文件1的索引的每一行。结果将是:
2222 abc
3359 def <---- this is a match
4444 ghi
...
我提出了这个解决方案:
2222 abc
3359 PREFIXdef <---- this is a match
4444 ghi
...
给出了这个结果:
sed `cat file1.txt | awk '{print "-e s/"$1"/"$1"PREFIX./"}'`<<<"`cat file2.txt`"
如何在PREFIX之前添加空格并删除之后的空格?我有一个错误 (命令未终止)
理想情况下,我会在's / xx / xx'周围添加2个撇号:
2222 abc
3359PREFIX def <---- this is a match
4444 ghi
...
但我无法摆脱'!!!
答案 0 :(得分:6)
这个awk命令可以通过将第一个文件中的所有第1列到达关联数组然后针对file2进行检查来处理它:
awk 'FNR==NR{a[$1]; next} $1 in a{$2 = "PREFIX" $2} 1' file1 file2
2222 abc
3359 PREFIXdef
4444 ghi