2016-08-31 30 views
0

我想要做的是使用sed將所有字符設置爲模式右側的小寫字母,但僅限於包含其他模式的行。sed:使匹配行上的所有內容小寫在模式的右邊

假設我想在包含單詞sillyduck的行上對/ directory/lowercase的右側做所有事情。

前:

sillyduck MOO/WORD/directory/THIS/FILE.TXT 
sillyduck another/directory/with/a/file.DOC 
#sillyduck MOO/WORD/directory/ANOTHER/FILE 
sillygoose MOO/WORD/directory/THIS/FILE.TXT 
SILLYDUCK MOO/WORD/DIRECTORY/THIS/FILE.TXT 
sillyduck QUACK/DUCK/directory/You/Get/The/Idea.doc 

後:

sillyduck MOO/WORD/directory/this/file.txt 
sillyduck another/directory/with/a/file.doc 
#sillyduck MOO/WORD/directory/another/file 
sillygoose MOO/WORD/directory/THIS/FILE.TXT 
SILLYDUCK MOO/WORD/DIRECTORY/THIS/FILE.TXT 
sillyduck QUACK/DUCK/directory/you/get/the/idea.doc 

什麼會去這樣做的最佳方式?我想堅持sed的解決方案。

在此先感謝! :)

+0

你應該已經包含單詞「目錄」在各種情況下的線兩次抽樣輸入幾行。在某些情況下,大多數潛在解決方案可能無法達到您想要的效果。 –

+0

道歉。一行後第一個目錄後面的任何內容應該變成小寫。 前: sillyduck MOO/WORD /目錄/本/目錄/ FILE.TXT 後: sillyduck MOO/WORD /目錄/本/目錄/ file.txt的 – parricc

+0

你應該添加到您的樣品輸入/輸出。 –

回答

3

鑑於您的評論新的信息:

$ echo 'sillyduck MOO/WORD/directory/THIS/directory/FILE.TXT' | 
    sed '/sillyduck/ s~/directory/.*~\L&~' 
sillyduck MOO/WORD/directory/this/directory/file.txt 
+1

非常感謝! :) – parricc

相關問題