2016-04-24 85 views
0

我一直在試圖找到如何在Mac OS X的終端上執行批量查找和替換操作超過過去一小時。我發現了不同版本的代碼,但難以實現。到目前爲止,我已經找到了一串可以工作的代碼,但它只適用於一個詞/字符。批量查找和替換的終端命令

我想要做的是在同一時間在一個文本文件中查找和替換多個字符。

例如:

查找§,與ก
查找Ø取代,與ด
查找替換≠, 與ห
查找£取代,與้

的代碼替換迄今爲止的作品是(但僅針對一個字符):

sed -i '' s/Ø/ด/ [textfile.txt] 

可以請幫助我嗎?

+0

我讀的例子的第一行用「不明確的東西」代替「段落標誌」,可能來自非拉丁字母。段落符號是你的意思,還是字符編碼有問題? – gboffi

+0

這是由於非拉丁字符。找到的我認爲是拉丁文,但不是替代品。 – samseva

+0

是的,段落符號是我的意思(以及「不等於」和英鎊符號)。 – samseva

回答

0

你的使用模式是很常見的,有特定的實用工具,您可以使用它,即tr

tr abc ABC <input.txt> output.txt 

在您使用兩個字符串(這裏abcABC),以就換人您指示tr想要(在此,用A替代a,bB等)。


隨着sed,這是MUCH在其相對於使用更普遍以tr,在每一行,以搜索和替換第一次出現是

sed 's/src1/rep1/' <in> out 

進行搜索,並在每行替換所有出現你添加一個g切換到s命令

sed 's/src1/rep1/g' <in> out 

最終做多的搜索d取代你必須用分號

sed 's/src1/rep1/g;s/src2/rep2/;s/src3/rep3/g' <in> out 

注意,在上面的例子中,我使用的g開關(行明智全局替換)爲第1分隔s命令和第三找到&替換而不是第二一個......你的使用可能會有所不同,但我希望你已經發現了這個模式,不是嗎?

+0

我試過了代碼,它的工作原理。但是,您是否知道要添加哪些代碼,以便一次可以找到並搜索多個單詞/字符? – samseva

+0

嘗試了代碼。我將介紹所有信息,以確保一切正常。 1.我創建了一個名爲「TestBefore.txt」的txt文件,其中包含文本「¢‡≠§Øħæõ/·Ω」。 2。在終端(已刪除的用戶)中輸入以下代碼:'sed's /¢/ก/;; s /§/ด/; s /Ä/า/ g'> /Users/[...]/Desktop/TestBefore .txt>/Users/[...。]/Desktop/TestAfter.txt。這創建了一個新的「TestAfter.txt」文件,但沒有文字。這也刪除了最初的「TestBefore.txt」文件中的所有文本。這是怎麼發生的? – samseva

+0

我的錯誤是,在第一個和第二個示例中,我使用了'< in > out',但在第三個示例中(您複製的那個)我錯誤地輸入了> out>,這是您在測試中複製的內容,這兩個「更大」的標誌。 「minor」表示「從下面的文件中獲取輸入」,而「greater」表示「將輸出放在下面的文件中」,所以我們所做的是錯誤的,嘗試'/Users /[...]/ Desktop/TestAfter.txt' ---請注意,我將編輯我的答案以糾正錯誤。 – gboffi