I have a file file1.txt that contains almost forty lines, each line contains a package name. I have another file composer.json that contains hundreds of packages. I need to remove all packages of my file1.txt from composer.json
file1.txt
remote5/package40
remote1/package1
remote4/package3
...
remote1/package2
Current composer.json
{
"name": "name/project_name",
"description": "sf project blabla",
...
"config": {
"installer-paths: {
"remote34/package345",
"remote21/package345",
"remote123/package345",
"remote384/package345",
"remote444/package345",
...
"remote1/package1",
"remote1/package2",
"remote4/package3",
...
"remote5/package40",
}
}
}
As you can see, the files are different, so I can't use this solution Remove Lines from File which appear in another File
Wanted composer.json
{
"name": "name/project_name",
"description": "sf project blabla",
...
"config": {
"installer-paths: {
"remote34/package345",
"remote21/package345",
"remote123/package345",
"remote384/package345",
"remote444/package345",
...
}
}
}
Here is the command I've been trying so far
for i in `cat file1.txt`; do echo $i && sed -i '/$i/d' composer.json; done
This doesn't change composer.json. However the command below works
sed -i '/remote4\/package3/d' composer.json
UPDATE
grep -Fvxf file1.txt composer.json
The output is exactly composer.json's content