我遇到一些問題,試圖使用SED使用具有正斜槓的變量編輯文件。SED使用變量查找字符串,編輯,然後替換
的文件,我試圖編輯「校驗」有如下內容...
758f9775093bf885dbc963cba1aec732,/bin/bash
1b45027142521f2a1c3d95891770eb47,/etc/grub.conf
2a34dc288f7994cc7b1b338605ef8775,/etc/hosts
03f670845fe199955f9a0babecbda9a0,/etc/networks
我要搜索字符串「/斌/慶典」使用一個變量(FILE_PATH =「/斌/ bash「),當我找到該字符串時,將所有內容移除到」,「並替換爲」VALID「。
這是我的sed語法和下面的嘗試,但是當我嘗試使用變量時失敗。有什麼建議麼?
成功不變量
# sed '\/bin\/bash/ s/^.*,/VALID,/g' checksum
VALID,/bin/bash
1b45027142521f2a1c3d95891770eb47,/etc/grub.conf
2a34dc288f7994cc7b1b338605ef8775,/etc/hosts
03f670845fe199955f9a0babecbda9a0,/etc/networks
失敗可變
# file_path="/bin/bash"
# echo $file_path
/bin/bash
# sed '/$file_path/ s/^.*,/VALID,/g' checksum
758f9775093bf885dbc963cba1aec732,/bin/bash
1b45027142521f2a1c3d95891770eb47,/etc/grub.conf
2a34dc288f7994cc7b1b338605ef8775,/etc/hosts
03f670845fe199955f9a0babecbda9a0,/etc/networks
我已經試過包裝在引號中的變量,{},仍然有同樣的故障:
# sed '/"$file_path"/ s/^.*,/VALID,/g' checksum
758f9775093bf885dbc963cba1aec732,/bin/bash
1b45027142521f2a1c3d95891770eb47,/etc/grub.conf
2a34dc288f7994cc7b1b338605ef8775,/etc/hosts
03f670845fe199955f9a0babecbda9a0,/etc/networks
# sed '/{$file_path}/ s/^.*,/VALID,/g' checksum
758f9775093bf885dbc963cba1aec732,/bin/bash
1b45027142521f2a1c3d95891770eb47,/etc/grub.conf
2a34dc288f7994cc7b1b338605ef8775,/etc/hosts
03f670845fe199955f9a0babecbda9a0,/etc/networks
我也用「|」作爲轉義字符。
# sed '|{$file_path}| s|^.*,|VALID,|g' checksum
sed: -e expression #1, char 1: unknown command: `|'
有關如何完成此任務的任何建議?
# sed --version
GNU sed version 4.2.1
完美!我會用這個。當我使用不同的分隔符進行測試時,我發現另一個區域是錯誤的。我並沒有逃避他們。謝謝你的幫助。 – 2014-09-04 18:07:25