sed - sed 删除与包含斜杠的变量值匹配的字符串
问题描述
我正在尝试使用 sed 清理列表。$salvation 中出现的任何行都应该从已经设置的 $naughtyList 中删除。
我有;
$ echo "$naughtyList"
ONE/1/one
TWO/2/two
THREE/3/three
FOUR/4/four
FIVE/5/five
和;
$ echo "$salvation"
TWO/2/two
FOUR/4/four
问题是斜线字符。尝试时我无法逃脱它们;
for line in $(echo $salvation); do
naughtyList=$(echo $naughtyList | sed "/$line/d")
done
sed: -e expression #1, char 6: unknown command: `2'
sed: -e expression #1, char 7: unknown command: `4'
有没有办法通过 $line,还是我必须修改输入模式?
提前致谢。
解决方案
最好在grep -f
这里使用过程替换:
grep -vFf <(echo "$salvation") <(echo "$naughtyList")
ONE/1/one
THREE/3/three
FIVE/5/five
要更新naughtyList
变量,请使用:
naughtyList=$(grep -vFf <(echo "$salvation") <(echo "$naughtyList"))
推荐阅读
- postgresql - postgresql bgworker SIGTERM 处理程序调用了两次
- wso2 - WSO2 Enterprise Integrator 6.3.0:如何将多个文件合并为一个?
- kohana-3.3 - Kohana 3.3 带有子文件夹的路由在 Windows 上工作但在 Linux 上失败
- javascript - Emscripten:如何使用标头构建 C++ 项目
- cakephp - 在 Cakephp 3.x 中保存对关联实体的手动更改
- jquery - 根据条件使用Jquery检索子节点信息
- sql - 对 Eloquent 的困难查询
- apache-spark - 火花数据框:爆炸列表列
- excel - 在 Excel 中使用 VBA 从组用户获取/检索 Active Directory SamAccountName
- corda - 在 Corda `devMode` 中,创建或更新 CorDapp 后是否必须重新运行引导程序