我正在使用这个参考:sed help:匹配和替换文字"\n"(不是换行符)
我有一个文件"test1.txt",其中包含一个字符串hello \ngoodbye
我使用此命令搜索并用实际的换行符替换"\n":
sed -i '' 's/\\n/\n/g' test1.txt
Run Code Online (Sandbox Code Playgroud)
但结果是:hellongoodbye.它只是将"\n"替换为"n"而不是实际的新行.这与/ t相同,它将留下"t"而不是选项卡.
''是针对MAC中未定义的错误:http://mpdaugherty.wordpress.com/2010/05/27/difference-with-sed-in-place-editing-on-mac-os-x-vs-linux /
更新:
我已经尝试了@ hek2mgl建议的两个命令:
sed -i 's/\\n/\n/g' test.txt
# Or:
sed -i'' 's/\\n/\n/g' test.txt
Run Code Online (Sandbox Code Playgroud)
虽然它们可能适用于Linux,但使用MAC OS时出现以下错误:
sed: 1: "test1.txt": undefined label 'est1.txt'
Run Code Online (Sandbox Code Playgroud)
不知道为什么我不能让这个工作.提前致谢.
我正在尝试使用sed将文本插入文件的第三行,我在其他论坛上找到的语法是:
sed -i '' "3i\ text to insert" file
Run Code Online (Sandbox Code Playgroud)
但是,当我使用它时,我收到一个错误:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚导致问题的原因.我正在使用OSX,这就是为什么我有一个空的''作为我的扩展.
谢谢!
有这个文件
ServerName *
ServerAlias *
ServerAlias *
<Directory>
Run Code Online (Sandbox Code Playgroud)
我想在第一次出现ServerAlias后用文本S2追加一个新行.我尝试了以下内容
sed '/ServerAlias/ a\S2\' foo
Run Code Online (Sandbox Code Playgroud)
但是这在所有事件发生后都会附加.
我的最终结果应该是
ServerName *
ServerAlias *
S2
ServerAlias *
<Directory>
Run Code Online (Sandbox Code Playgroud) 我不是在 Mac 上复制这个答案的行为。我希望在自己的行上拆分元素。任何的想法?
$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1nstring2nstring3nstring4nstring5
Run Code Online (Sandbox Code Playgroud)