2015-10-05 30 views
1

我有一個小數據集就像一個下面包含<文件名中>:刪除在每一行的註釋(如果存在)

##standby!##hellow how are you1 
##standby!##hellow how are you2 
#how do you do 
##standby!##hellow how are you4 
am good jane 
##standby!##hellow how are you5 

現在我要檢查,如果字符串##standby!##存在和發生任何給定行的開始,如果它確實刪除它。

如果字符串##standby!##在該行的開始處不可用,則跳過該行並繼續執行該文件的其餘部分。

我嘗試這樣做:

sed '/^#/ d' <filename> 

任何幫助將不勝感激。

回答

1

你不妨使用orde中符合sed的POSIX兼容參數R鍵可移植使用此命令跨平臺:-efn通過POSIX sed支持

sed 's/^##standby!##//g' file > newfile 

只有選項。

1

您可以簡單地使用:

sed -i.bak 's/^##standby!##//' file 
hellow how are you1 
hellow how are you2 
#how do you do 
hellow how are you4 
am good jane 
hellow how are you5 

^##standby!##將匹配在啓動模式和替代只是一個空字符串。 -i.bak用於內聯編輯。

+0

我覺得你必須跳過'好jane':如果在該行的開始處沒有## standby!##這個詞,則跳過該行並繼續執行文件的其餘部分。 –

+1

看來OP打算刪除包含'## standby!##'的每一行。我的第二個理解是刪除像你這樣的詞,但不要處理(意味着刪除)'好的簡潔'這一句。當然,只有OP知道他真正想要的東西。乾杯。 – alvits

+0

@RajMullapu:如果這不能解決您的問題,那麼您應該澄清這些問題並提供您的預期輸出。 – anubhava

0

perl -pe 's/##standby\!##//g' filename

產生這樣的輸出:

hellow how are you1 
hellow how are you2 
#how do you do 
hellow how are you4 
am good jane 
hellow how are you5 

-p遍歷每一行,處理
-e後打印出來執行Perl代碼
s/foo/bar/g替代