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的魔力,您能解释一下这到底在做什么吗?我已经尝试了上面列出的所有答案,除了这个技巧之外,没有任何方法对我有效!谢谢