Jas*_*ost 5 bash grep awk sed command-line
我有一个包含单词(每行一个)的文件,例如
狗
鱼
猫
鞋
我有一个 CSV 格式的辅助文件,例如
1,鞋子,红色
2,苹果,黑色
3,雾,蓝色
我想使用 grep 将第一个文件作为搜索模式,如果辅助文件中的一行在第一个文件中包含一个单词,我想完全删除辅助文件中的该行。
我不确定 grep 甚至是解决这个问题的方法。
编辑:bash 脚本
kin*_*ine 10
您可以使用grep's-f选项(小写-f,而不是-F)执行此操作:
% echo -e 'Dog\nFish\nCat\nShoes' > ./file1.txt
% echo -e '1,shoes,red\n2,apple,black\n3,fog,blue' > ./file2.csv
# Grab all lines from the CSV that match a pattern from file1:
% grep -if ./file1.txt ./file2.csv
1,shoes,red
# Grab all lines from the CSV that DON'T match a pattern from file1:
% grep -vif ./file1.txt ./file2.csv
2,apple,black
3,fog,blue
Run Code Online (Sandbox Code Playgroud)
详细解释:
grep — 不言自明-v — 表示“返回与输入模式不匹配的行”-i — 表示“不区分大小写的匹配”(因为您的第一个文件有大写字母而 CSV 没有)-f— 表示“将指定文件 ( file1.txt)中的每一行解释为用于匹配的模式”根据您想要的结果和文件的内容,您可能还需要阅读-F和-w选项。
如果您需要就地编辑文件,我认为您可以使用sed's-f选项执行此操作,但sed将文件的每一行解释为命令,而不是像do 这样的简单模式grep。
| 归档时间: |
|
| 查看次数: |
11941 次 |
| 最近记录: |