2011-07-01 26 views
18

這就是我試過的:sed -i 's/^.*/"$&"/' myFile.txt如何用sed引用雙引號括住文件中的每一行?

它在每行的開頭放了一個$。

+0

您是否嘗試刪除&符號? –

+0

對不起,我的意思是說它在每行的開頭放了一個$。編輯。沒有&符號,它什麼都不做 –

+0

在這裏都可以正常工作..我不知道你在使用什麼樣的sed –

回答

22

這裏是

sed 's/\(.*\)/"\1"/g' 
+0

嗯,這一個似乎沒有任何效果。 –

+0

我是否需要在PowerShell中雙引號或者什麼? –

+0

在OS X Yosemite上非常出色。 – funroll

4

你幾乎是正確的。試試這個稍作修改的版本:

sed 's/^.*$/"&"/g' file.txt 
10

sed 's/.*/"&"/' 

沒有空格

sed 's/ *\(.*\) *$/"\1"/' 

跳過空行

sed '/^ *$/d;s/.*/"&"/' 
2

你也可以不用捕獲組:

sed 's/^\|$/"/g' 

'^'匹配行的開始,'$'匹配行的末尾。

|是「替代」,它只是意味着「或」。它需要在這裏轉義[1],所以英文^\|$表示「線的開始或結束」。

「替換」這些字符很好,它只是將文本附加到開頭的末尾,因此我們可以替換",並在末尾添加g以便全局搜索一次同時匹配。

[1]不幸的是,事實證明|不是POSIX「基本正則表達式」的一部分,而是可以使用REG_ENHANCED標誌進行編譯的「增強」功能的一部分,但在OSX上不是默認的,所以您使用適當的基本捕獲組更安全,如s/^\(.*\)$/"\1"/

今天對我很不起作用。

+0

如果你明白sed的魔力,你能解釋一下這是在做什麼嗎? – funroll

+1

我已經嘗試了上面列出的所有答案,沒有任何作品適合我,但這個訣竅呢!謝謝。 – ASten