Sub*_*thi 4 linux bash awk sed
我想替换它
#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)
有了这个
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
我试过两种方法
方法1
original_str="#!/usr/bin/env bash"
replace_str="#!/bin/bash"
sed s~${original_str}~${replace_str}~ filename
Run Code Online (Sandbox Code Playgroud)
方法2
line=`grep -n "/usr/bin" filename`
awk NR==${line} {sub("#!/usr/bin/env bash"," #!/bin/bash")}
Run Code Online (Sandbox Code Playgroud)
但他们两个都没有工作.
anu*_*ava 18
您不能!在BASH中使用双引号,否则将进行历史扩展.
你可以这样做:
original_str='/usr/bin/env bash'
replace_str='/bin/bash'
sed "s~$original_str~$replace_str~" file
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
小智 5
使用转义字符:
$ cat z.sh
#!/usr/bin/env bash
$ sed -i "s/\/usr\/bin\/env bash/\/bin\/bash/g" z.sh
$ cat z.sh
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)