2012-02-01 24 views
0

我用單線的GnuWin32 SED不更換線在一個文件

PJL COMMENT PREPRINTINFO : COPIES=1 

我用下面的模式,但不替換文件內的線與測試txt文件sed實用。但它並不是真正的路線。

H:\sed.exe -e "s/@PJL COMMENT PREPRINTINFO : COPIES=1/@PJL COMMENT 
PREPRINTINFO : COPIES=2/g" H:\test.txt H:\test.txt 

請幫忙。

回答

0

@是什麼意思?離開他們。

並且不要自行替換文件。

0

正如Tichodroma所指出的,要麼使用'/'或'@'作爲你的正則表達式分隔符,而不是兩者。在搜索目標字符串中包含「@」時,必須在文件中進行匹配。

更重要的是,爲什麼要在sed cmd的末尾重複文件名?

要麼你想

H:\sed.exe -e "s/PJL COMMENT PREPRINTINFO : COPIES=1/PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt > H:\test2.txt 

,或者您的sed支持-i選項,

H:\sed.exe -i "s/PJL COMMENT PREPRINTINFO : COPIES=1/PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt 

的 'G' 在你的指揮手段 '全球化' 的結束,可能是多餘的,因此爲了使代碼儘可能高效,應該將其刪除,除非您希望任何1行文本包含您的搜索目標的多個副本。我已經把它留在原地,因爲你可能對你的文件做的比你的問題指出的更多。

最後,-e不會給sed命令添加太多內容,並且如果使用-i,則會導致錯誤使用。

我希望這會有所幫助。

+0

「最後,'-e'不會給sed命令增加很多,並且如果使用'-i',它會混亂使用。這是我第一次聽說這樣的事情。對貨物崇拜說不。改爲閱讀手冊頁。 – sayap 2012-05-29 13:32:26