【发布时间】:2014-10-28 14:59:41
【问题描述】:
我在尝试使用包含正斜杠的变量使用 SED 编辑文件时遇到一些问题。
我正在尝试编辑“校验和”的文件具有以下内容...
758f9775093bf885dbc963cba1aec732,/bin/bash
1b45027142521f2a1c3d95891770eb47,/etc/grub.conf
2a34dc288f7994cc7b1b338605ef8775,/etc/hosts
03f670845fe199955f9a0babecbda9a0,/etc/networks
我想使用变量(file_path=“/bin/bash”)搜索字符串“/bin/bash”,当我找到该字符串时,删除“,”之前的所有内容并替换为“有效的”。
下面是我的 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
【问题讨论】:
标签: sed