2015-10-02 64 views
0

因此在React 0.12中有/** @jsx React.DOM */在所有jsx文件的頂部不再需要。當我看到每個jsx文件頂部存在的/** @jsx React.DOM */行時,我正在使用的庫實際上會引發錯誤。Sed刪除每個文件的第一行,結尾有擴展名爲.jsx的

所以我想知道是否有一個快速的方法使用sed從目錄中的每個文件中刪除此行。

我是否應該刪除第1行,還是有一種方式讓我進行模式匹配,並驗證它是否在頂部?另外,如何遞歸地從目錄中的所有文件中刪除它,它是子目錄?

謝謝!

+0

如何在文件中替換匹配並刪除一行可以在這裏找到: http://stackoverflow.com/questions/5410757/delete-a-line-containing-a-specific-string-using-sed 如何遞歸遍歷目錄在這裏: http://stackoverflow.com/questions/18897264/bash-writing-a-script-to-recursively-travel-a-directory-of-n-levels – bbuckley123

回答

4

是的,在find的幫助下很簡單。下面的命令行中的所有* .jsx文件的第一行:

find /path/to/files -name '*.jsx' -exec sed -i '1d' {} \; 

此命令刪除包含某些註釋行:

find /path/to/files -name '*.jsx' -exec sed -i '/^\/\*\* @jsx React\.DOM \*\/$/d' {} \; 

讓你的文件的備份發行,因爲這之前的命令他們修改文件到位。比對不起更安全。

+1

爲100 %安全,你應該真的逃避'*'s和'.'在正則表達式中 - '/ \/* * * * @jsx React \ .DOM \ * \ //'它可能適用於錨定'/^ \/\ * * * @jsx React \ .DOM \ * \/$ /'如果這是整行。 –

+0

@EdMorton的確!你是對的。我記住''''在'sed'中用作量詞時,不通過'-r',需要轉義。我應該怪你,因爲你讓我使用更多的'awk'和更少的'sed'。 :)你看,我對'sed'的知識已經生鏽了! – hek2mgl