相关疑难解决方法(0)

如何为sed替换命令使用不同的分隔符?

我正在编写一个shell脚本来创建一些配置文件.我必须替换文件中的一些模式,并且应该用路径替换一个模式.

所以我的问题是:有没有办法用路径替换我的占位符webpath而不在斜杠前面设置反斜杠?

也许有另一种工具可以做到这一点?

sed

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

在sed命令中转义正斜杠

BashSED我试图用URL替换js文件中的两个字符串.

当我运行.sh脚本时,应插入的两个url是输入参数.

./deploy.sh https://hostname.com/a/index.html https://hostname2.com/test
Run Code Online (Sandbox Code Playgroud)

然而,为了使我的sed命令这可用我要逃避所有向前斜杠:\\

./deploy.sh https:\\/\\/hostname.com\\/a\\/index.html https:\\/\\/hostname2.com\\/test
Run Code Online (Sandbox Code Playgroud)

如果它们被转义,则此SED命令适用于Mac OSX Sierra

APP_URL=$1
API_URL=$2

sed "s/tempAppUrl/$APP_URL/g;s/tempApiUrl/$API_URL/g" index.src.js > index.js
Run Code Online (Sandbox Code Playgroud)

现在我不想将转义的URL作为参数插入,我希望它自己的脚本能够转义正斜杠.

这就是我尝试过的:

APP_URL=$1
API_URL=$2

ESC_APP_URL=(${APP_URL//\//'\\/'})
ESC_API_URL=(${API_URL//\//'\\/'})

echo 'Escaped URLS'
echo $ESC_APP_URL
#Echos result: https:\\/\\/hostname.com\\/a\\/index.html 
echo $ESC_API_URL
#Echos result: https:\\/\\/hostname2.com\\/test

echo "Inserting app-URL and api-URL before dist"
sed "s/tempAppUrl/$ESC_APP_URL/g;s/tempApiUrl/$ESC_API_URL/g" index.src.js > index.js
Run Code Online (Sandbox Code Playgroud)

参数看起来相同,但在这种情况下,SED会抛出错误

sed: 1: "s/tempAppUrl/https:\\/\ ...": bad flag in substitute command: '\'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里的区别?字符串看起来相同,但给出不同的结果.

bash shell sed

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

Sed命令不会用特殊字符替换字符串

我有一个从".properties"文件中获取值的脚本.如果它是一个简单的字符串,它会成功替换该值但如果包含转义字符(如''\')则不起作用.任何人都可以指出该做什么,我在互联网上搜索但无法理解"REGEX".

脚本文件:

#!/bin/bash
# Omer's First Script
#Include Properties File
. directoryPaths.properties
echo "Start"

sed -i "s/DONEDIRECTORY/$DoneDirectory/" *TestFile*



echo "finish"
Run Code Online (Sandbox Code Playgroud)

directoryPaths.properties

DoneDirectory=/home/omerkhalid/Documents/Test/Done
Run Code Online (Sandbox Code Playgroud)

TESTFILE.TXT

这是一份测试文件.

DONEDIRECTORY

错误:

sed: -e expression #1, char 18: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)

注意: 如果我将"DoneDirectory"的值更改为简单字符串即"完成",它可以正常工作.但是使用"/"转义字符它不起作用.

regex bash sed

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

标签 统计

sed ×3

bash ×2

regex ×1

shell ×1