我需要从shell命令中替换-Xmx1024m中的1024(将2048更改为standalone.conf)。

我尝试使用sed执行此操作:

echo $(sed 's/1024/2048/g' standalone.conf) > standalone.conf.


该代码有效,但是保存的文本丢失了制表符和换行符。

最佳答案

将扩展传递给echo无引号会使它经历字符串拆分和glob扩展,将这些进程产生的每个单词作为一个单独的参数传递给echo(该echo然后在每个之间用单个空格组合)。

请考虑:

sed 's/1024/2048/g' <standalone.conf >standalone.conf.new && mv standalone.conf{.new,}


...并且,通常,总是使用echo "$foo"或代替echo $foo -此处缺少引号是导致您的错误最直接的原因。

关于linux - 用sed替换时丢失制表符和换行符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35491534/

10-11 15:37