0
我必須將某些頁面移動到另一個主機,但數據庫IP被拆分。 所以我要做找到用戶名的值,並替換兩行的IP找到值,但通過bash替換另一行另一行
我這個嘗試了上面:
#!/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和正確的預期輸出/ – Inian
爲什麼標記爲'perl'? –
我把它放到了pastebin,因爲我在這裏得到了一個格式化的消息 http://pastebin.com/62XG4jkw 我也試過用perl,所以這是一個錯誤,對不起 – Avalun