以下是需要替换的示例行
./some_file.c Fri Jan 6 17:24:13 MPST 2017
因此在运行sed以逃避原始字符串中的某些字符后,这就是我得到的
\.\/some_file\.c Fri Jan 6 17:24:13 MPST 2017
^
1 less space
这是我在bash脚本中的sed命令
local escaped_temp1=$(echo $temp1 | sed --regexp-extended 's/[\/&.]/\\&/g')
我可以知道如何保留空白?
答案 0 :(得分:2)
Sed没有删除带有不带引号的参数的空格echo
。请改用echo "$temp1"
:
$ temp1='./some_file.c Fri Jan 6 17:24:13 MPST 2017'
$ echo $temp1
./some_file.c Fri Jan 6 17:24:13 MPST 2017
$ echo "$temp1"
./some_file.c Fri Jan 6 17:24:13 MPST 2017
附注:除非您确实要将\
替换为\\
,否则无需在括号表达式中转义/
。此外,您实际上并未使用扩展的正则表达式而且不需要--regexp-extended
。