linux - grep -v with while read line 命令无法正常工作
问题描述
我使用这个命令
while read line || [ -n "$line" ]; do grep -v "$line" target.txt > tmp; mv tmp target.txt; done < removefrom.txt
从 ( target.txt ) 中删除与 ( removefrom.txt )中的字符串匹配的行
这是(目标.txt)
e
1
k
2
a
这是 (removefrom.txt)
d
e
c
a
k
b
e
a
结果应该如下所示:
1
2
但有时结果是这样的:
e
1
2
或者
e
1
2
a
或者
1
2
a
我曾经尝试使用sed
,但问题仍然存在,它没有正确删除行。
解决方案
grep -vf removefrom.txt target.txt
推荐阅读
- angular - 切换组名时出错
- javascript - Javascript 功能仅适用于边缘而不是 chrome、firefox 或 opera
- git - Git:未提交的更改出现在新签出的分支上
- sql - 我如何将日期分组(一月、二月、三月等)
- mysql - 主-主复制 [Percona]
- android - 即使未打开应用程序,我应该怎么做才能使 firebase 数据库同步
- jquery - 带有后退按钮的 jquery 多级菜单 - 正在创建多个后退按钮元素
- qt - 如何告诉 buildroot 使用不同版本的 Qt 源代码
- mysql - 解释一下这个 Shell 管道魔法 (... | tee >(tail -c1 >$PULSE) | bzip2 | ...) 是如何工作的?
- c - 从文件读取到数组并将答案存储在另一个