【发布时间】:2017-01-22 00:39:48
【问题描述】:
我必须将一些页面移动到另一台主机,但是数据库 IP 被拆分了。 所以我必须找到用户名的值并替换 IP 上方的两行
我试过了:
#!/bin/bash
OUTPUT="$(find /home/user/files/script/test-file -maxdepth 1 -iname file_with_many_sqlconnections.php -exec grep -Hina -B 2 u1_3347 {} \; | grep 172)"
echo "${OUTPUT}"
LINE="$(echo "$OUTPUT" | cut -d"-" -f3 )"
echo "${LINE}"
FILE="$(echo "$OUTPUT" | cut -d"-" -f1,2)"
echo "${FILE}"
CONTENT="$(echo "$OUTPUT" | cut -d"-" -f4 | cut -d"." -f4 | cut -d "\"" -f1)"
echo "${CONTENT}"
gawk -v line="$LINE" -v content="$CONTENT" -v file="$FILE" -i inplace "NR=="line"{gsub("content", 177)}1" "$FILE"
我尝试了几种变量组合,quotevariants,反之亦然。
我也尝试了sed 和perl,但是要么我得到了垃圾作为输出,要么EOF 之后出现了换行问题,要么gawk 忽略了换行并试图在一个命令中填充所有内容。
我使用echo 段仅用于查看结果是否正常,并且当我在 shell 中看到它时,它“显示”它很好。
问题
$db = mysql_connect("172.1.1.178",
"u2_3456","pass6");
$db = mysql_connect("172.1.1.178",
"u1_3347","pass7");
$db = mysql_connect("172.1.1.178",
"u1_3347","pass7");
$db = mysql_connect("172.1.1.178",
"u2_3456","pass6");
$db = mysql_connect("172.1.1.178",
"u1_3347","pass7");
应该是:
$db = mysql_connect("172.1.1.178",
"u2_3456","pass6");
$db = mysql_connect("172.1.1.180",
"u1_3347","pass7");
$db = mysql_connect("172.1.1.180",
"u1_3347","pass7");
$db = mysql_connect("172.1.1.178",
"u2_3456","pass6");
$db = mysql_connect("172.1.1.180",
"u1_3347","pass7");
$db = mysql_connect("172.1.1.180",
"u1_3347","pass7");
问题
$db = mysql_connect("172.1.1.178",
"u2_3456","pass6");
$db = mysql_connect("172.1.1.178",
"u1_3347","pass7");
【问题讨论】:
-
请添加示例 i/p 和正确的预期输出/
-
为什么这个标签是“perl”?
-
我把它放到了 pastebin,因为我在这里遇到了格式问题pastebin.com/62XG4jkw 我也用 perl 试过,所以在这种情况下是一个错误,对不起
-
请解释您遇到的格式问题。特别是通过单击明显的按钮
{}来解释我应用的格式有什么问题。如果您无法解释,请研究 StackOveflow 格式化帮助。 -
我发现您的措辞“上面两行”与您提供的引号之间存在矛盾。