2011-10-18 52 views

回答

10

grep工具有一個-v選項,反轉過濾器的感覺。例如:

grep -v pax people 

會給你在people文件的所有行是包含pax

一個例子是:

grep -v '^ *-- ' oldfile >newfile 

而它與只有白色空間中的註釋標記前述除掉線。它不會但是改變般的線條:

select blah blah -- comment here. 

如果你想這樣做,你會使用類似sed

sed -e 's/ --.*$//' oldfile >newfile 

其編輯每行刪除任何字符從" --"到隊伍的盡頭。

請記住,你需要小心在真正像SQL語句(做作)查找字符串" --"

select ' -- ' | colm from blah blah blah 

如果你有這些,你最好創建/使用SQL解析器而不是簡單的文本修改工具。


sed在操作的成績單:

pax$ echo ' 
...> this is a line with -- on it. 
...> this is not 
...> and -- this is again' | sed -e 's/ --.*$//' 

this is a line with 
this is not 
and 

對於grep

pax$ echo ' 
    -- this line starts with it. 
this line does not 
and -- this one is not at the start' | grep -v '^ *-- ' 

this line does not 
and -- this one is not at the start 
+0

+1:比我的答案(現在已刪除)更徹底。 – Johnsyweb

+0

嗨,我已經測試了SED命令,但並未刪除包含「 - 」的行。 GREP命令僅刪除文件開頭的幾行文件。 –

+0

@André:那麼我不確定你是否正確使用它們。我在答案的最後添加了一些成績單以顯示測試用例。 – paxdiablo

0

嘗試在外殼採用sed

sed -e "s/(--.*)//" sql.filename 
+0

爲什麼'g'?如果你在'--'之後匹配* everything,那麼每行只能出現一次。 – Johnsyweb

+0

@Johnsyweb是的,你是對的。編輯答案。 –

1

您CA n使用sed命令作爲sed -i '/\-\-/d' <filename>

+0

爲什麼反斜槓? – Johnsyweb

+0

它工作在兩種方式。它可以寫成sed -i'/ -/d'。我承認我在考慮' - '可能是一個特殊角色我們也可以使用-i選項在文件中進行一次位置更改。 – explorer

+0

我不得不添加反斜槓才能在MacOS上完成這項工作。 –