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

Regex 如何用sed将文件中的每一行用双引号括起来?,regex,windows,sed,Regex,Windows,Sed,这就是我尝试的:sed-I的/^.*/“$&”//myFile.txt 它在每行的开头都放了一美元。在这里 sed 's/\(.*\)/"\1"/g' 你几乎把它做好了。尝试此稍加修改的版本: sed 's/^.*$/"&"/g' file.txt 短的 sed 's/.*/"&"/' 没有空间 sed 's/ *\(.*\) *$/"\1"/' 跳过空行 sed '/^ *$/d;s/.*/"&"/' 您也可以在没有捕获组的情况下执行此操作: sed 's/^

这就是我尝试的:
sed-I的/^.*/“$&”//myFile.txt

它在每行的开头都放了一美元。

在这里

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

你几乎把它做好了。尝试此稍加修改的版本:

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

sed 's/.*/"&"/'
没有空间

sed 's/ *\(.*\) *$/"\1"/'
跳过空行

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

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

sed 's/^\|$/"/g'
“^”匹配行首,“$”匹配行尾

|
是一个“替代”,它只是表示“或”。这里需要转义[1],因此在英语中,
^\\$
表示“行的开始或结束”

“替换”这些字符很好,它只是在末尾的开头添加文本,因此我们可以替换
,并在末尾添加
g
,以便全局搜索同时匹配这两个字符

[1] 不幸的是,事实证明,|不是POSIX“基本正则表达式”的一部分,而是“增强”功能的一部分,可以使用REG|U增强标志进行编译,但在OSX上默认情况下不是这样的,因此使用适当的基本捕获组(如
s/^\(.\)$/“\1”/


今天给我一个谦虚的馅饼。

你有没有试着去掉符号和?对不起,我的意思是在每行的开头放一个$。编辑。没有符号和它在这里都不起作用。我不知道你在用什么样的sed
&
不需要
$
,你只是得到了一个文本
$
.基数d在您的评论中,我认为您有一个shell引用问题,而不是
sed
问题。这起作用:“s/^.*$/\”&\“/”。我必须转义双引号(但使用sed的转义字符,而不是powershell的转义字符)。我使用的是GnuWin32中的sed。使用其他版本的sed不一定要这样做吗?嗯,这个版本似乎没有任何效果。我需要在powershell中转义双引号吗?在OS X Yosemite上非常有效。对于unix/linux初学者,您可能需要执行类似于
cat filename.txt | sed's/\(.*)/“\1“/g'
将您的输入输入到sed中。
cat文件|
是对
cat
的典型错误使用。使用文件重定向将文件传递到标准输入:
sed's/\(.*\)/“\1”/g'
。如果您了解sed的魔力,您能解释一下这到底在做什么吗?我已经尝试了上面列出的所有答案,除了这个技巧之外,没有任何方法对我有效!谢谢