相关疑难解决方法(0)

没有给我正确的替代操作与Mac换行 - GNU sed和BSD/OSX sed之间的差异

我正在使用这个参考: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)

不知道为什么我不能让这个工作.提前致谢.

macos bsd gnu sed

15
推荐指数
2
解决办法
2万
查看次数

sed insert line命令OSX

我正在尝试使用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,这就是为什么我有一个空的''作为我的扩展.

谢谢!

macos bash sed insert

11
推荐指数
4
解决办法
2万
查看次数

sed仅在1次出现时附加行

有这个文件

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)

sed

3
推荐指数
1
解决办法
2230
查看次数

按分隔符拆分字符串并在新行上打印元素

我不是在 Mac 上复制这个答案的行为。我希望在自己的行上拆分元素。任何的想法?

$ echo "string1:string2:string3:string4:string5" | sed s/:/\\n/g
string1nstring2nstring3nstring4nstring5
Run Code Online (Sandbox Code Playgroud)

regex macos bash sed

3
推荐指数
1
解决办法
3338
查看次数

标签 统计

sed ×4

macos ×3

bash ×2

bsd ×1

gnu ×1

insert ×1

regex ×1