对于文件file1.txt的每一行L,删除文件composer.json中包含L的行
For each line L of a file file1.txt, remove the line of the file composer.json that contains L
我有一个文件file1.txt,包含将近四十行,每行包含一个包名称。
我有另一个文件 composer.json,其中包含数百个包。我需要从 composer.json
中删除我的 file1.txt 的所有包
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",
}
}
}
如您所见,文件不同,所以我无法使用此解决方案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",
...
}
}
}
这是我到目前为止一直在尝试的命令
for i in `cat file1.txt`; do echo $i && sed -i '/$i/d' composer.json; done
这不会改变 composer.json。但是下面的命令有效
sed -i '/remote4\/package3/d' composer.json
更新
grep -Fvxf file1.txt composer.json
输出正好是composer.json的内容
显然,您的 composer.json 无效。
有了你的数据,你可以试试
awk 'NR==FNR{a[[=10=]];next} {b=[=10=];sub("[^\"]*\"","");sub("\"[^\"]*$","");if(!([=10=] in a))print b}' file1.txt composer.json
和grep
grep -Fvf <(sed 's/.*/"&",/' file1.txt) composer.json
使用 json 格式修饰您的搜索键并查找固定字符串匹配项。
我有一个文件file1.txt,包含将近四十行,每行包含一个包名称。 我有另一个文件 composer.json,其中包含数百个包。我需要从 composer.json
中删除我的 file1.txt 的所有包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",
}
}
}
如您所见,文件不同,所以我无法使用此解决方案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",
...
}
}
}
这是我到目前为止一直在尝试的命令
for i in `cat file1.txt`; do echo $i && sed -i '/$i/d' composer.json; done
这不会改变 composer.json。但是下面的命令有效
sed -i '/remote4\/package3/d' composer.json
更新
grep -Fvxf file1.txt composer.json
输出正好是composer.json的内容
显然,您的 composer.json 无效。 有了你的数据,你可以试试
awk 'NR==FNR{a[[=10=]];next} {b=[=10=];sub("[^\"]*\"","");sub("\"[^\"]*$","");if(!([=10=] in a))print b}' file1.txt composer.json
和grep
grep -Fvf <(sed 's/.*/"&",/' file1.txt) composer.json
使用 json 格式修饰您的搜索键并查找固定字符串匹配项。