moa*_*a_u 2 command-line bash sed
我在使用sed命令时遇到问题。我正在尝试编写一个执行以下操作的 bash 脚本:
:@:@并将其替换为新行如下所示:
#! /bin/bash
echo "Please enter the ip address of you file"
read ipnumber
find=`grep ':@' application.properties` # find the line
input="connection.url=jdbc\racle\:thin\:@$ipnumber\:1521\:billz" # preparing new line
echo `sed "s/'${find}'/'${input}'/g" application.properties` # replace old with new line
Run Code Online (Sandbox Code Playgroud)
问题是:什么也没有发生。
我已经尝试使用"${find}" 而不是'${find}'
该片段有几个问题。我建议您在编写脚本之前更好地学习 bash 的语法。
不管怎样,如果你想编辑一个文件,你需要一个文件编辑器。sed 不是文件编辑器。我相信这会做你想做的。
#!/bin/bash
read -p "Enter the ip address: " ipnumber
ed -s application.properties << EOF
/:@/c
connection.url=jdbc:oracle:thin:@$ipnumber:1521:billz
.
w
EOF
Run Code Online (Sandbox Code Playgroud)
那是什么ed脚本说的是:/:@/c-含有第一线:@,ç焊割用下面的一切,直到仅包含一个行的行.。然后w到w ^礼器更改该文件。
请参阅http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed以获取使用 ed 进行编辑的帮助,并查看http://mywiki.wooledge.org/BashGuide以了解 bash。
更新:
sed 可以用来实现相同的,但它不能编辑文件,它只能用于创建一个新文件。
# POSIX
sed "/:@/c\
connection.url=jdbc:oracle:thin:@$ipnumber:1521:billz" application.properties
Run Code Online (Sandbox Code Playgroud)
这里 sed 将输出应用了更改的文件。您可以重定向到一个新文件,然后将该文件移到旧文件上。GNU sed 还有一个非标准-i选项,可以透明地完成最后一部分。GNU sed 也不要求您在 sed 脚本中有该换行符。
# GNU sed
sed -i "/:@/c connection.url=jdbc:oracle:thin:@$ipnumber:1521:billz" application.properties
Run Code Online (Sandbox Code Playgroud)
请注意,ed 将仅替换与正则表达式匹配的第一行,而 sed 将替换与该正则表达式匹配的所有行。
| 归档时间: |
|
| 查看次数: |
2665 次 |
| 最近记录: |