簡體   English   中英

如何從每個具有匹配文本的文件中刪除行?

[英]How do I remove lines from every file that has a matching text?

$ grep "console.log" * -R
account/db.js:        console.log(err);
account/db.js:        console.log(info);
account/db.js:                console.log(err);
account/db.js:                    console.log(err2);
account/controller.js:    console.log(covers);
account/controller.js:    console.log(req.api_user);
account/controller.js:    console.log(code);
account/controller.js:        console.log(user);
account/helper.js:                console.log(err);
messages/db.js:        console.log("Error " + err);
messages/helper.js:                console.log('No email notify.');
messages/helper.js:                console.log(msg_body);
messages/helper.js:                        console.log(message.sid);
messages/helper.js:                        console.log(message.dateCreated);
messages/helper.js:                        console.log(error);
products/controller.js:            console.log(product);
products/controller.js:                console.log(product);
products/helper.js:        console.log(data)
products/helper.js:    console.log('removing index....');
profile/db.js:                console.log(err);
profile/db.js:                console.log(info);
profile/db.js:                console.log(err);
profile/controller.js:                            console.log("sending phone confirmation text...");
profile/helper.js:            console.log(message.sid);
profile/helper.js:            console.log(message.dateCreated);
profile/helper.js:            console.log(error);
receiver/controller.js:    console.log(from);
receiver/controller.js:    console.log(body);
receiver/controller.js:        console.log(from_email);
receiver/controller.js:        console.log(to_id_gen);
receiver/controller.js:        console.log(finalbody);
receiver/controller.js:                            console.log(result);
reviews/db.js:        console.log(err);
reviews/db.js:        console.log(results);
reviews/controller.js:            console.log(review);
reviews/controller.js:    console.log(review_id);
search/controller.js:        console.log(JSON.stringify(data.hits.hits, null, 4));

如您所見,在編寫代碼時,我到處都在進行console.log。

現在,我要刪除所有這些行。 我不想手動進入每個文件將其刪除。 相反,我想通過命令來完成。

類似於grep "console.log" * -R ,我如何做同樣的事情,但是遞歸地刪除那些行? (從我的當前目錄一直瀏覽樹中的每個文件)

嘗試find這種東西。 嘗試find . -type f -exec sed -i '/console\\.log/d' {} \\; find . -type f -exec sed -i '/console\\.log/d' {} \\; 但是您可能會對使用-i.bak而不是-i感興趣, -i.bak它會保留備份副本

試一下。

sed -i.bak '/console.log/d' */*.js

-i參數可在適當位置編輯文件。 原始文件的名稱后將附加.bak ,因此如果出現問題或改變主意,則可以將其恢復。

這不是一個適當的遞歸解決方案。 您可能需要修改文件名通配符,或從find . -exec ...驅動命令find . -exec ... find . -exec ...包裝使其遞歸。

在Perl中:

perl -i -n -e'print unless /console\.log/' $(find . -name '*.js')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM