如何用sed用双引号括起文件中的每一行?

时间:2011-07-01 23:15:55

标签: windows sed

这就是我尝试过的:sed -i 's/^.*/"$&"/' myFile.txt

它在每一行的开头放了一个$。

4 个答案:

答案 0 :(得分:27)

这里是

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

答案 1 :(得分:12)

更短的

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

没有空格

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

跳过空行

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

答案 2 :(得分:4)

你几乎做对了。试试这个稍微修改过的版本:

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

答案 3 :(得分:2)

您也可以在没有捕获组的情况下执行此操作:

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

' ^'匹配行的开头,' $'匹配线的末尾。

|是" Alternation",它只是意味着" OR"。它需要在这里进行转义[1],所以英语^\|$表示"行的开头或结尾"。

"更换"这些字符很好,它只是在最后将文字添加到开头,因此我们可以替换",并在末尾添加g以进行全局搜索,以便同时匹配两者。

[1]不幸的是,事实证明|不属于POSIX"基本正则表达式"但是#34;增强的一部分"可以使用REG_ENHANCED标志编译的功能,但在OSX上默认情况下不是这样,因此您可以使用适当的基本捕获组(如s/^\(.*\)$/"\1"/

更安全

今天对我来说很谦卑。